StateBehaviourのカスタマイズ


StateBehaviourをカスタマイズするには、StateBehaviour用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。

StateBehaviourスクリプトファイルの作成

  • Projectウィンドウから作成したい場所で右クリック。
  • 右クリックメニューから、「Create > Arbor > StateBehaviour」からお好きな言語を選択。
    スクリプトファイルの作成
  • ファイル名を入力して決定

呼び出される関数

作成したStateBehaviourをArborEditorにてステートに割り当てると、スクリプトの各関数が呼び出されるようになります。

  • OnStateAwake
    初めてステートに遷移してきたときに呼ばれます。
  • OnStateBegin
    ステートに遷移してきたときに呼ばれます。
  • OnStateEnd
    ステートから離れるときに呼ばれます。
  • MonoBehaviourのメッセージ関数
    詳しくはUnity ScriptReferenceのMonoBehaviourのMessagesを参照してください。

呼び出し順

arborcallbacks

  • OnStateAwake/OnStateBegin/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;
	// 略
}

editserializedfield

ステートの接続

フィールドの追加

作成したスクリプトに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;
	// 略
}

%e6%bc%94%e7%ae%97%e3%83%8e%e3%83%bc%e3%83%89%e3%81%8b%e3%82%89%e3%81%ae%e5%85%a5%e5%8a%9b%e4%be%8b

値の取得

値を取得するには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;
	// 以下略
}

%e6%bc%94%e7%ae%97%e3%83%8e%e3%83%bc%e3%83%89%e3%81%8b%e3%82%89%e3%81%ae%e5%85%a5%e5%8a%9b%e4%be%8bflexible
ArborEditorウィンドウでCalculucatorを選択すれば演算ノードからの入力を受け付ける。

値の取得

値を取得するにはvalueプロパティを使用します。

Debug.Log("Value " + flexible.value);

データ出力スロット

フィールドの追加

作成したスクリプトにpublicもしくはSerializeField属性をつけたOutputSlotIntやOutputSlotFloatなどを宣言することで、出力スロットが表示されます。
使用可能なOutputSlotは スクリプトリファレンス を参照してください。

using UnityEngine;
using Arbor;

public class TestBehaviour : StateBehaviour
{
	public OutputSlotInt slotInt;
	// 以下略
}

%e6%bc%94%e7%ae%97%e3%83%8e%e3%83%bc%e3%83%89%e3%81%b8%e3%81%ae%e5%87%ba%e5%8a%9b%e4%be%8b

値の設定

値を設定するにはSetValueメソッドを使用します。

slotInt.SetValue(10);