teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

修正を参考にして書き換えたのですが、うまく書けません。アドバイスをお願いしたいです。

2019/10/11 09:51

投稿

meJ15
meJ15

スコア55

title CHANGED
File without changes
body CHANGED
@@ -69,4 +69,60 @@
69
69
  ### 補足情報(FW/ツールのバージョンなど)
70
70
 
71
71
  Mac
72
- Unity 2018.3.14
72
+ Unity 2018.3.14
73
+
74
+
75
+ ## 修正に関して
76
+
77
+ クラスを作ることをやってみようとしているのですが、遠回りの実装をしている気がしたので、アドバイスを頂きたいです。
78
+
79
+ クラスを作って
80
+ その変数にfloat でbrowOuterUpRight .... とすることで、
81
+ 参考URLのようにinspectorを作るつことができたのですが、
82
+ updateの中でそのクラスに値をセットするメソッドを使って、適当な値を下のように代入しても
83
+ ```
84
+ public void SetDate(int order ,float data){
85
+ //faceList[order] = data;
86
+ cheekPuff = data;
87
+ }
88
+ ```
89
+ inspectorでは反映されませんでした。(なぜなのでしょうか?)
90
+ update関数内での
91
+ ```
92
+ Debug.Log(faceblendshape.cheekPuff);
93
+ ```
94
+ では値が入ってることを確認できています。
95
+
96
+
97
+ イメージでは、
98
+ update関数で配列のindexと値を使って
99
+ クラスのset関数を呼び出して、
100
+ 配列のindexに対応するfloat(cheekPuff)に値を代入しようと思っているのですが、、、、
101
+
102
+ ```c#
103
+ [System.Serializable]
104
+ class FaceBlendShape
105
+ {
106
+ public float browOuterUpRight, mouthLowerDownLeft, eyeLookUpLeft, cheekPuff;
107
+
108
+ public string[] faceList = {"browOuterUpRight","mouthLowerDownLeft","eyeLookUpLeft","cheekPuff"};
109
+
110
+ public string SetDate(int order ,float data){
111
+ //faceList[order] = data;としたいが、stringにfloatを入れることになってしまう。
112
+ cheekPuff = data;
113
+ return "0";
114
+ }
115
+ }
116
+ [SerializeField] FaceBlendShape faceBlend;
117
+
118
+
119
+ public void Update() {
120
+ FaceBlendShape faceblendshape = new FaceBlendShape();
121
+ var net = NetworkMeshAnimator.Instance;
122
+ var nameList = net.blendShapeName;
123
+
124
+ for (int i = 0; i < nameList.Count; i++){
125
+ faceblendshape.SetDate(i,net.blendShapeList[i]);
126
+ }
127
+ Debug.Log(faceblendshape.cheekPuff);
128
+ ```