階層化FSMの実現

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を確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。
masakam1

階層化FSMの実現

Post by masakam1 »

https://www.slideshare.net/Unite2017Tok ... y-75810280
こちらの記事を呼んでarborで階層化FSMをやろうとしました。
しかしtrial版にSubStateらしいものはありませんでした(

現状標準では階層化はサポートされてないのでしょうか?
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: 階層化FSMの実現

Post by caitsithware »

masakam1 wrote:https://www.slideshare.net/Unite2017Tok ... y-75810280
こちらの記事を呼んでarborで階層化FSMをやろうとしました。
しかしtrial版にSubStateらしいものはありませんでした(

現状標準では階層化はサポートされてないのでしょうか?
申し訳ありませんが、現状、標準機能として実装されていないため、独自に拡張していただく必要があります。

スライドにあるような実装としましては、
  • SubState用のStateBehaviourスクリプトを作成。
  • SubStateでは、指定したArborFSMのプレハブをパラメータとして持っておき、OnStateBeginの時にInstantiate、子FSMが終了したらTransition。
  • 子FSMでは終了ステートでTriggerを投げるかEndStateなどのStateBehaviourスクリプトを作成して親FSMに終了したことを通知。
といった形で実現できるかと思います。

私も階層化&共通化は重要だと認識しておりますので、今後何らかの形でArbor本体へと組み込みたいと思っております。
標準対応につきましては今しばらくお待ちいただけますようよろしくお願いいたします。
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: 階層化FSMの実現

Post by caitsithware »

提案だけではなんですので、ひとまず簡易版を作成いたしました。
ArborSubState.unitypackage
(17.44 KiB) Downloaded 442 times
こちらをダウンロードしてArborを使用しているプロジェクトにインポートしてください。

サンプルは、ArborSubState/Examplesにあります。
Scenes/SubStateシーンは、ボタンを押すと子FSMに移行してコインを出して戻ってくるサンプルとなっています。

使い方
  • 挙動追加から State > SubState を選択してSubStateを追加
  • SubStateのPrefabパラメータに共通で使用したいFSMのプレハブを指定
    ArborSubState.png
    ArborSubState.png (10.71 KiB) Viewed 5300 times
  • 子のFSM側で、挙動追加から State > EndStateを選択してEndStateを追加。
    こちらはとくに設定項目はありません。
    ArborEndState.png
    ArborEndState.png (4 KiB) Viewed 5300 times
注意点
  • 子FSMは子GameObjectとしてInstantiateされます。
    OnCollisionEnterなど、親GameObjectにのみ通知されるメッセージは処理できません。
    位置の指定なども現状できません。
  • 一度Instantiateした子FSMは次回以降でもオブジェクトを使いまわします。
    パラメータなどは初期化されないため、必要に応じてEndState前か開始ステートにて初期化処理を入れる必要があります。
masakam1

Re: 階層化FSMの実現

Post by masakam1 »

わざわざありがとうございます!:D
これで一気に便利になります、さっそく試してみます


Last bumped by Anonymous on 2018/02/23 06:37.
Post Reply