Unityのアセット『Feel』を使用していて、スクリプトから設定したFeedbackの値を書き換えたいと思っていました。
今回この記事では、Feedbackを取得する方法を記事にしておきます。
Feelは手探りで使用しているのでもっといい方法があるかもしれません。より良い方法があればコメントで教えて頂けると助かります!
GetFeedbackOfType()で取得
今回、以下のMMF_Playerクラスを設定しているオブジェクトから、Feedbackを取得しています。
[SerializeField] MMF_Player Move_Feedbacks;
Move_FeedbacksからGetFeedbackOfType()でMMF_Positionの要素を取得します。
// タイプから取得 MMF_Position feedback_Position = Move_Feedbacks.GetFeedbackOfType<MMF_Position>(); // 移動位置の変更 feedback_Position.DestinationPosition = new Vector3(300, 0, 0);
設定しているFeedbackに同じタイプのFeedbackが複数ある場合、上にあるFeedbackが先に見つかって取得されます。
同じタイプのFeedbackを複数設定している場合は次のLINQを使用してラベル名から取得すると良いでしょう。
LINQを使用してラベル名から取得
LINQのWhereを使用してラベル名から取得できます。やり方は以下の方法です。
FeedbacksListはMMF_Feedbackという抽象クラスを継承したクラスが入っています。
そのまま取得するとMMF_Feedbackを取得するので、キャストしましょう。
// Linqでラベル名を指定して取得 MMF_Position feedback_Position2 = (MMF_Position) Move_Feedbacks.FeedbacksList.Where(x => x.Label == "ラベル名").First(); // 移動位置の変更 feedback_Position2.DestinationPosition = new Vector3(300, 0, 0);
さいごに
今回は、スクリプトからFeedbackを取得する方法を紹介しました。
プレハブから複数生成して、Feedbackの値を別々に変更したい時、今回紹介した方法でやってみてはいかがでしょうか。
Feelは手探りでやっているので、他にも良い方法があるかもしれません。
他にいい方法があれば気軽にコメントで教えて頂けると助かります!
コメント