Page 1 of 1

ArborFSM、BehaviourTreeのRemoveComponet

Posted: 2018/05/17 08:21
by kudou
unity2018 1.0 f2 personal
Arbor 3.0.2p1

ArborFSM、BehaviourTreeをインスペクターからRemoveComponentすると下記のログが出力されました。

NullReferenceException: Object reference not set to an instance of an object
ArborEditor.ArborFSMInternalInspector.OnDestroy () (at Assets/Plugins/Arbor/Internal/Editor/ArborFSMInternalInspector.cs:56)

またこのRemoveComponent前にArborFSMなどでノードを作成して挙動を追加していた場合、このGameObjectをprefabにするとArborFSMで追加した挙動がインスペクターに表示されるようになっていました。

Re: ArborFSM、BehaviourTreeのRemoveComponet

Posted: 2018/05/17 08:47
by caitsithware
ご報告ありがとうございます。
詳しく調査いたします。
またこのRemoveComponent前にArborFSMなどでノードを作成して挙動を追加していた場合、このGameObjectをprefabにするとArborFSMで追加した挙動がインスペクターに表示されるようになっていました。
該当のGameObjectをprefabにしたかどうかにかかわらず例外が発生しているのでしょうか。
問題の切り分けのためにも、出来る限り具体的にどのGameObjectを編集したか(プレハブ化していてシーン側のオブジェクトのFSMを消した、など)も教えていただけると助かります。

Re: ArborFSM、BehaviourTreeのRemoveComponet

Posted: 2018/05/17 09:05
by kudou
エラーログはprefabに関係なく出力されます。

下記に「①エラーログ出力までの手順」と「②インスペクターに挙動が表示されるまでの手順」を書きます。

①エラーログ出力までの手順
1、ヒエラルキー上の右クリックメニュー → CreateEmptyでGameObject作成
2、インスペクター上のAddComponentでArborFSMを追加
3、インスペクター上で先ほど追加したArborFSMをRemoveComponent

②インスペクターに挙動が表示されるまでの手順
1、ヒエラルキー上の右クリックメニュー → CreateEmptyでGameObject作成
2、インスペクター上のAddComponentでArborFSM を追加
3、ArborEditorでステートを作成
4、ステートにTimeTransitionを追加(おそらく、どの挙動でも何個でも可)
5、インスペクター上でArborFSMをRemoveComponent(ここでエラーログが出力されます)
6、ArborFSMをRemoveComponentしたGameObjectをPrefab化
7、このPrefabかさきほどのGameObjectをインスペクターで確認すると追加していた挙動が表示される

Re: ArborFSM、BehaviourTreeのRemoveComponet

Posted: 2018/05/17 09:28
by caitsithware
ありがとうございます。
詳しい手順まで書いていただいて助かります。

Re: ArborFSM、BehaviourTreeのRemoveComponet

Posted: 2018/05/17 10:55
by caitsithware
修正パッチ3.0.2p2を公開いたしました。
http://arbor.caitsithware.com/patch/release-3-0-2p2/

②については、RemoveComponentでの破棄処理が正常に行われないことが原因で、根本部分が同じ問題でしたので、
こちらも3.0.2p2を適用していただければ修正されます。

Re: ArborFSM、BehaviourTreeのRemoveComponet

Posted: 2018/06/05 15:45
by kudou
対応ありがとうございます。
修正されているのを確認致しました。