開始ステートに戻るタイミングについての質問

Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。

Forum rules
Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。
sugkaz

開始ステートに戻るタイミングについての質問

Post by sugkaz »

お世話になっております。
初歩的なことで恐縮なのですが、ArborFSMのステートに関して疑問があります。


ArborFSMコンポーネントをつけたGameObjectを非アクティブ化しても、FSMの遷移は開始ステートに戻らない(リセットされない)ようですが、これは仕様という認識で良いでしょうか?

また、強制的に開始ステートまで戻すには、トリガートランジションを使用するのがパッと思いつきますが、他にも方法はあったりするでしょうか?


PlaymakerではGameObjectの非アクティブ化で遷移がリセットされて開始ステートまで戻るので、Arborの仕様なのか、それとも私の使い方が間違っているのか、ハッキリさせた方が良いかなと思い、質問させていただきます。

お手すきの際にでもご確認いただけますと幸いです。
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: 開始ステートに戻るタイミングについての質問

Post by caitsithware »

ご利用ありがとうございます。

GameObjectのアクティブ状態とFSMの再生状態についてですね。

まず、GameObjectやArborFSMコンポーネントを非アクティブにした場合、FSM内の再生状態は一時停止扱いとなり仕様です。
再びアクティブに戻すと非アクティブにする直前の状態から再開されます。

開始ステートに戻したい場合は以下の方法があります。
  • Stopメソッド
    再生停止します。
    再生を再び開始したい場合はPlayメソッドを呼び出してください。
    またスクリプトからの呼び出しの他、組み込み挙動のPlay/Stopもありますので他のFSMからもPlay/Stopが可能です。 グラフの再生/停止をする場合は、基本的にはPlay/Stopの使用を推奨いたします。
  • BackToStartState
    自身のFSMの開始ステートに遷移します。
    StateLinkの接続が不要な代わりに接続線はグラフに表示されません。
    また、いつ開始ステートに戻したいか自身のグラフ内で完結しない場合は、結局のところ下記の常駐ステート+TriggerTransitionのような処理も必要になります。
  • TriggerTransition
    特定文字列を受け取った場合に遷移します。
    例えば常駐ステートにTriggerTransitionを追加し接続先を開始ステートに設定、FSM外からSendTriggerを呼び出せば開始ステートに戻せます。
    こちらはおっしゃる通りの方法ですね。
いずれもParameterContainerの値は開始時の状態に戻らないため、パラメータも戻したい場合は必要に応じて初期化や終了処理を入れ込む必要がありますのでその点はご注意ください。
sugkaz

Re: 開始ステートに戻るタイミングについての質問

Post by sugkaz »

ご返信ありがとうございます!

細かく説明していただき、大変ありがたいです。
特にPlay/Stopの説明は参考になりました。

疑問点が解消しましたので、心置きなくArborで開発を続けられそうです。
Post Reply