Decoratorのカスタマイズ


こちらはArbor 3.2.4以前のドキュメントです。

最新ドキュメントはArbor Documentationをご覧ください。

Decoratorのスクリプトを作成し、行いたい処理を記述することでオリジナルの条件判定やループ処理を追加できます。

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

  • Projectウィンドウから作成したい場所で右クリック。
  • 右クリックメニューから、「Create > Arbor > BehaviourTree > Decorator C# Script」を選択。
  • ファイル名を入力して決定

呼び出される関数

作成したDecotarotをコンポジットノードやアクションノードに追加すると、スクリプトの各関数が呼びだされるようになります。

  • OnAwake
    初めてノードがアクティブになった時に呼ばれます。
  • OnStart
    ノードがアクティブになった時に呼ばれます。
  • OnAbort
    ノードがDecoratorにより中断する時に呼ばれます。
  • OnEnd
    ノードが終了するときに呼ばれます。
  • HasConditionCheck
    ConditionCheckを行うかどうかを判定するために呼ばれます。
    ConditionCheckを行わない場合はoverrideしてfalseを返すようにしてください。
    デフォルトtrue。
  • OnConditionCheck
    条件判定を行う時に呼ばれます。
    条件に合致する場合はtrueを、合致しなければfalseを返してください。
    中断するかどうかは最終的にはAbortFlagsにより決定されます。
  • OnRepeatCheck
    ノードが正常終了した場合に繰り返すかどうかを判定する際に呼ばれます。
    繰り返す場合はtrueを返してください。
    デフォルトfalse
  • OnFinishExecute
    実行結果を変更するために呼ばれます。
    デフォルトでは受け取った結果をそのまま返します。

呼び出し順

  • ノードに複数のDecoratorを追加している場合は上から順に呼ばれます。
  • OnEnableとOnDisable以外のMonoBehaviourのコールバックメソッドも使用できますが、Start()はOnConditionCheck()などの後に呼ばれてしまうため注意してください。

変数の宣言

作成したスクリプトにpublicもしくはSerializedField属性をつけたフィールドを宣言することでArbor Editorで編集可能になります。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Arbor;
using Arbor.BehaviourTree;

[AddComponentMenu("")]
public class TestDecorator : Decorator {
	public string myName;
	// 略
}

また、StateBehaviourと同様にCalculatorSlotやFlexibleクラスも使用できます。