Page 1 of 1

GetParameterでContainerをDataSlotで設定すると、ArborFSMのPlay On StartをfalseにしていてもContainerを取得しようとする

Posted: 2023/02/16 14:39
by ooee
いつもお世話になっています。

件名の不具合に遭遇したので、ご報告いたします。

OS: Windows10
Unityバージョン: 2021.3.18f1
Arborバージョン: 3.9.3
再現方法:
1. ArborFSMを作成して、Play On Startのチェックを外す
2. ArborFSM内でGameObject.GetComponentとGetParameterを作成
3. GameObject.GetComponentのGameObjectをConstant、ComponentをParameterContainerにし、GetParameterのContainerに接続
4. GetParameterのParameterをValue、Typeをintにする
5. GameObject.GetComponentのソースコードを開いて、73行目のif (gameObject != null)をコメントアウト
6. エディタの再生ボタンを押すと、以下のようなエラーが発生する
>NullReferenceException
>Arbor.Calculators.GameObjectGetComponentCalculator.OnCalculate () (at Assets/Plugins/Arbor/BuiltInBehaviours/Scripts/Calculators/Component/GameObjectGetComponentCalculator.cs:75)

Re: GetParameterでContainerをDataSlotで設定すると、ArborFSMのPlay On StartをfalseにしていてもContainerを取得しようとする

Posted: 2023/02/16 16:35
by caitsithware
ご報告ありがとうございます。

この件に関しましては、パラメータの値が変更した時に演算ノードにDirtyフラグを立て再演算する仕様の構造上の問題という感じです。
たしかに問題ではありますので今後の更新で改善いたします。

Re: GetParameterでContainerをDataSlotで設定すると、ArborFSMのPlay On StartをfalseにしていてもContainerを取得しようとする

Posted: 2023/02/16 23:38
by ooee
ご回答ありがとうございます。

>この件に関しましては、パラメータの値が変更した時に演算ノードにDirtyフラグを立て再演算する仕様の構造上の問題という感じです。
>たしかに問題ではありますので今後の更新で改善いたします。
承知しました。改善されるまでの間、nullチェックなどを入れて実行されないようにして、様子見したいと思います。

Re: GetParameterでContainerをDataSlotで設定すると、ArborFSMのPlay On StartをfalseにしていてもContainerを取得しようとする

Posted: 2023/03/04 01:18
by ooee
Arbor 3.9.4にアップデートして確認したところ、上記のエラーが発生しなくなりました。
修正していただき、ありがとうございます。

Re: GetParameterでContainerをDataSlotで設定すると、ArborFSMのPlay On StartをfalseにしていてもContainerを取得しようとする

Posted: 2023/03/04 01:29
by caitsithware
ご確認ありがとうございます。
それでは修正完了としてこちらのトピックを閉じます。