0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hamster OutputAdvent Calendar 2024

Day 8

【Unity】Arbor3のParameterContainerの値が変更できない問題の解決方法

Last updated at Posted at 2024-12-07

はじめに

この記事はHamster Output Advent Calendar 2024の8日目の記事です!

今回は数日間悩んだ、Arbor3のParameterContainerの値が変更できない問題の解決方法を記事にしたいと思います。

結論:同じオブジェクトに付けない

画像のように、ArborFSM(StateMachine)、BehaviourTree、ParameterContainerを同じGameObjectに付けていると...値が、変わらない問題が起きます。

image.png

解決方法はシンプルで、1つのGameObjectから分ければ解決します。この場合、子階層のGameObjectに変更するだけで問題は解決できます。

気づいたきっかけ

ParameterContainerのドキュメントを発見し、○○○ParameterReferenceで値を参照するという方法を見つけました。

今まで、自分はSet○○○(○○○, 値);のようにSetメソッドを使って値を変更すると思っていましたが、ParameterReferenceでも値を変更できるということが分かりました。

実際に確認した

ParameterReferenceにはSerializeField属性をつけて、インスペクタからどのParameterContainerが参照できるのか確認できます。なので、それぞれのParameterContainerに値を作成してどれが参照出来ているのか実験をして見ます!

今回、ArborFSM(StateMachine)、BehaviourTree、ParameterContainerの3つを付けているので、それぞれに、bool変数でState、Behaviour、Parameterという値を作ります。

image.png

そしてParameterReferenceの参照先を確認をして見ると...

image.png

3つ付けてるのに1つしか参照出来ていない! ということが分かりました。どういう基準で選ばれているのかは謎ですが、同じGameObjectに付けると駄目みたいです。

まとめ

同じGameObjectにArborFSM(StateMachine)、BehaviourTree、ParameterContainerをアタッチしていると、ParameterContainerを参照したい時に参照先が分からなくなるので、なるべく分けよう!

雑メモ

・Set○○○が反応しなかった理由

Setメソッドが反応しなかった原因として、参照していたParameterContainerが、違った可能性が高い。それでも、何も情報が無かったら例外やエラー辺りが出てもおかしくはない気がするけども...?

・UnityObjectでコンポーネントを持たせる

ParameterContainerにコンポーネントを持たせたい場合、UnityObjectというのを利用する。
image.png

画像のではAnimatorが選択されているが自分で設定をする必要があり、何も設定していないと、ArborEditor上でコンポーネントが認識されないので注意が要りそう。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?