Page 1 of 1

SubStateMachineReferenceで同じ子FSMをUse Directly In Sceneのtrueにして2か所で実行すると、ExternalFSM is already in use as a child FSM.

Posted: 2021/08/07 14:06
by ooee
いつもArborにはお世話になっています。
件名の不具合が発生したので、ご報告いたします。

OS: Windows10
Unityバージョン: 2020.3.15f2
Arborバージョン: 3.8.3
再現方法:
1. シーン内にEndStateMachineだけを実行する子FSMを作成
2. 親FSMで、SubStateMachineReferenceで1.の子FSMをUse Directly In Sceneのtrueにして2か所で実行するようにする
3. 実行すると2回目の実行でExternalFSM is already in use as a child FSM. Cannot run as a child FSM.

シーン内に配置した子FSMを複数箇所で使いまわししたいと考えているのですが、上記のエラーが出てうまくいかない感じです。
お手数をおかけしますが、確認していただけると助かります。

Re: SubStateMachineReferenceで同じ子FSMをUse Directly In Sceneのtrueにして2か所で実行すると、ExternalFSM is already in use as a child FSM.

Posted: 2021/08/07 23:35
by caitsithware
ご利用&ご報告ありがとうございます。

その使用方法は仕様想定外になっておりましたので、検討して対応いたします。
(ちなみにインスタンスを使いまわす関係で同時実行できないようにしている点は仕様となります)

暫定対処方法:
  • Assets/Plugins/Arbor/BuiltInBehaviours/Scripts/Behaviours/StateMachine/SubStateMachineReference.csを開く。
  • 237行目から241行目まで(エラーメッセージを出すif文スコープ部分)をコメントアウトする
  • 同様に他のSub~Referenceの該当部分も必要に応じてコメントアウトする。
外部グラフに指定した子グラフが他グラフにとって正式な子グラフだった場合でも強制的に子FSMを奪うような想定外の動作になってしまいますので、その点はご注意ください。

Re: SubStateMachineReferenceで同じ子FSMをUse Directly In Sceneのtrueにして2か所で実行すると、ExternalFSM is already in use as a child FSM.

Posted: 2021/08/08 00:24
by ooee
>237行目から241行目まで(エラーメッセージを出すif文スコープ部分)をコメントアウトする
コメントアウトしたところ、うまく動くようになりました。
しばらくこれで様子見したいと思います。

ありがとうございました。

Re: SubStateMachineReferenceで同じ子FSMをUse Directly In Sceneのtrueにして2か所で実行すると、ExternalFSM is already in use as a child FSM.

Posted: 2021/08/13 23:20
by caitsithware
Arbor 3.8.4にて対応いたしました。
アセットストアから再DLし、リリースノートやreadme記載の更新手順に従って再インポートしてください。
Arbor 3.8.4 リリース | Arbor 3

これにてこのトピックはクローズといたします。