こちらはArbor 3.2.4以前のドキュメントです。
最新ドキュメントはArbor Documentationをご覧ください。
StateBehaviourをカスタマイズするには、StateBehaviour用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。
Contents
StateBehaviourスクリプトファイルの作成
- Projectウィンドウから作成したい場所で右クリック。
- 右クリックメニューから、「Create > Arbor > StateBehaviour C# Script」を選択。
- ファイル名を入力して決定
呼び出される関数
作成したStateBehaviourをArborEditorにてステートに割り当てると、スクリプトの各関数が呼び出されるようになります。
- OnStateAwake
初めてステートに遷移してきたときに呼ばれます。 - OnStateBegin
ステートに遷移してきたときに呼ばれます。 - OnStateUpdate
ArborFSMのUpdate()のタイミングで呼ばれます。
毎フレーム呼ばれるかどうかはArborFSMのUpdate Settingsに依存。 - OnStateLateUpdate
ArborFSMのLateUpdate()のタイミングで呼ばれます。
毎フレーム呼ばれるかどうかはArborFSMのUpdate Settingsに依存。 - OnStateEnd
ステートから離れるときに呼ばれます。 - MonoBehaviourのメッセージ関数
詳しくはUnity ScriptReferenceのMonoBehaviourのMessagesを参照してください。
呼び出し順
- OnStateAwake/OnStateBegin/OnStateUpdate/OnStateLateUpdate/OnStateEndはArbor Editorでのステートノードに追加されている上から順に呼ばれます。
- MonoBehaviour関連はUnityによる実行順にしたがって呼び出されます。
詳しくはUnity Manualの Execution Order of Event Functions を参照してください。
変数とArbor Editor
作成したスクリプトにpublicもしくはSerializeField属性をつけた変数を宣言することでArbor Editorで編集可能になります。
using UnityEngine; using System.Collections; using Arbor; public class TestBehaviour : StateBehaviour { public string myName; // 略 }
ステートの接続
フィールドの追加
作成したスクリプトにpublicもしくはSerializeField属性をつけたStateLinkを宣言することでArbor Editorで接続スロットが表示されるようになります。
using UnityEngine; using System.Collections; using Arbor; public class TestBehaviour : StateBehaviour { public StateLink nextState; // 略 }
接続先への遷移
遷移したいタイミングでTransitionを呼ぶと遷移できます。
Transition( nextState );
データ入力スロット
フィールドの追加
作成したスクリプトにpublicもしくはSerializeField属性をつけたInputSlotIntやInputSlotFloatなどを宣言ことで、入力スロットが表示されます。
使用可能なInputSlotは スクリプトリファレンス を参照してください。
using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public InputSlotInt slotInt; // 略 }
値の取得
値を取得するにはGetValueメソッドを使用します。
int data = 0; slotInt.GetValue(ref data); Debug.Log("Value " + data);
Flexible版データ入力
フィールドの追加
作成したスクリプトにpublicもしくはSerializeField属性をつけたFlexibleIntやFlexibleFloatなどを宣言するとFlexibleなデータ設定フィールドが表示されます。
使用可能なクラスは スクリプトリファレンス を参照してください。
using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public FlexibleInt flexible; // 以下略 }
ArborEditorウィンドウでCalculucatorを選択すれば演算ノードからの入力を受け付ける。
値の取得
値を取得するにはvalueプロパティを使用します。
Debug.Log("Value " + flexible.value);
データ出力スロット
フィールドの追加
作成したスクリプトにpublicもしくはSerializeField属性をつけたOutputSlotIntやOutputSlotFloatなどを宣言することで、出力スロットが表示されます。
使用可能なOutputSlotは スクリプトリファレンス を参照してください。
using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public OutputSlotInt slotInt; // 以下略 }
値の設定
値を設定するにはSetValueメソッドを使用します。
slotInt.SetValue(10);