Page 1 of 1

Stop > Start 時の挙動

Posted: 2019/12/10 01:35
by kkk2
OS(必須) MacOS 10.15.1
Unityバージョン(必須) 2018.4.13
Arborバージョン(必須) 3.6.7
再現方法(必須)

SubStateMachineReferenceが実行中、ArborFSM.Stop > Startしても、実行中のSubStateMachineReferenceはリセットされず、
そのままのステートで始まるようです。これが仕様なのか不具合なのか分からないですが、自分のプロジェクトではこれが原因でうまく動作しなかったので一応報告。

Re: Stop > Start 時の挙動

Posted: 2019/12/10 03:24
by caitsithware
ご報告ありがとうございます。
kkk2 wrote:
2019/12/10 01:35
SubStateMachineReferenceが実行中、ArborFSM.Stop > Startしても、実行中のSubStateMachineReferenceはリセットされず、
そのままのステートで始まるようです。
念のため状況を確認いたしますが、正確には以下のような流れということで間違いないでしょうか。
  1. ArborFSM内の1ステートがアクティブになり、そのステートに追加してあるSubStateMachineReferenceが実行される。
  2. SubStateMachineReferenceが実行中(子FSMでは開始ステート以外に遷移している状況)に
    親のArborFSMのStopメソッドを呼び出した
  3. その後、同ArborFSMのPlayメソッドを呼び出し、再度SubStateMachineReferenceのステートがアクティブになった際に、
    子FSMではStopが呼び出されたタイミングでのステートから再開されてしまう。
特に「ArborFSM.Stop > Startしても」という部分について、Playメソッドではなく本来呼び出せないはずのStartメソッドを無理に呼び出していないか、
Stop → Startがメソッド呼び出しのことではなく、ゲームオブジェクト自体のアクティブ切り替えか等、念のためご確認お願いいたします。

Re: Stop > Start 時の挙動

Posted: 2019/12/10 03:47
by Guest
その認識で問題ないです。Start ではなく Play でした。

正確に書くと、
1、Playで MainFsm再生
2、Play中、特定のタイミングで常駐ステート(Task A)にて State Bに移行させる。
3、State Bに追加してある、SubStateMachineReferenceによって、SubFSMが実行。
4、SubFSMのステートが進んだところで MainFsmをStop
5、Playで MainFsm再生
6、特定のタイミングでTask Aによって State Bに移行する
7,SubFSMが前回の続きから再生される

常駐ステートが問題かどうかは分かりませんが、こちらで確認した問題は上記のとおりです。
MainFsmはリセットされているようでした。

Re: Stop > Start 時の挙動

Posted: 2019/12/10 04:58
by caitsithware
ありがとうございます。
確認し不具合でしたら修正いたします。

Re: Stop > Start 時の挙動

Posted: 2019/12/10 06:46
by Guest
原因がわかりました。Stopの前に Pauseしている箇所があり、その状態でStopするとリセットしないようです。
一度Resumeを挟んだら正常にリセットしました。

お騒がせして申し訳ありません。

Re: Stop > Start 時の挙動

Posted: 2019/12/10 06:54
by caitsithware
ゲスト wrote:
2019/12/10 06:46
原因がわかりました。Stopの前に Pauseしている箇所があり、その状態でStopするとリセットしないようです。
一度Resumeを挟んだら正常にリセットしました。
なるほど、その場合も動作としては不自然なので修正したほうがよさそうですね。
情報ありがとうございます。