こちらはArbor 3.2.4以前のドキュメントです。
最新ドキュメントはArbor Documentationをご覧ください。
ここでは、自作パラメータをParameterContainerに登録する方法を説明します。
Contents
Variableスクリプトファイルの作成
Variable Generatorによるスクリプトの生成
自作パラメータ用スクリプトを作成します。
- Projectウィンドウの右クリックメニューから「Create > Arbor > Variable C# Script」を選択。

- Variale Generatorウィンドウの「Variable Name」フィールドにパラメータクラス名を入力
「Create」ボタンを押してスクリプト作成。
- 使用できない名前の場合はエラーボックスが表示されるため、Variable Nameを修正してください。
- OpenEditorチェックボックスがチェックされていると、「Create」ボタン押下後にスクリプトエディタが開きます。
作成例
「Variable Name」にEnemyInfoと入力し、「Create」ボタンを押して作成されたスクリプト例
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Arbor;
[System.Serializable]
public class EnemyInfo
{
// Declare Serialize Fields
}
[System.Serializable]
public class FlexibleEnemyInfo : FlexibleField<EnemyInfo>
{
public FlexibleEnemyInfo(EnemyInfo value) : base(value)
{
}
public FlexibleEnemyInfo(AnyParameterReference parameter) : base(parameter)
{
}
public FlexibleEnemyInfo(InputSlotAny slot) : base(slot)
{
}
public static explicit operator EnemyInfo(FlexibleEnemyInfo flexible)
{
return flexible.value;
}
public static explicit operator FlexibleEnemyInfo(EnemyInfo value)
{
return new FlexibleEnemyInfo(value);
}
}
[System.Serializable]
public class InputSlotEnemyInfo : InputSlot<EnemyInfo>
{
}
[System.Serializable]
public class OutputSlotEnemyInfo : OutputSlot<EnemyInfo>
{
}
[AddComponentMenu("")]
public class EnemyInfoVariable : Variable<EnemyInfo>
{
}
解説
- EnemyInfo
自作するパラメータのクラス。
シリアライズ用フィールドを追加することで、ParameterContainerで自作パラメータを設定できるようになります。 - FlexibleEnemyInfo
Constant、Parameter、Calculatorを切り替えて参照できるようにするためのクラス。 - InputSlotEnemyInfo
EnemyInfoの入力スロット用クラス。 - OutputSlotEnemyInfo
EnemyInfoの出力スロット用クラス。 - EnemyInfoVariable
ParameterContainerへ登録するためのVariableクラス。
クラス名とスクリプトファイル名が一致している必要があります。
フィールドの追加
生成したスクリプトにフィールドを追加します。
例として、EnemyInfoにいくつかフィールドを追加してみます。
[System.Serializable]
public class EnemyInfo
{
// Declare Serialize Fields
public string displayName;
public Sprite icon;
}
ParameterContainerへの追加
作成したVariableをParameterContainerへ追加します。
- あらかじめParameterContainerを作成しておいてください。
- 「+」ボタンを押し、「Variable > 作成したVariable名」を選択。

- パラメータが追加される

Variableパラメータへの参照
FlexibleField
生成したスクリプトファイルに定義されているFlexible+Variable NameのクラスをStateBehaviourなどに持たせることで参照できます。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Arbor;
[AddComponentMenu("")]
public class EnemyInfoBehaviour : StateBehaviour {
public FlexibleEnemyInfo enemyInfo;
// Use this for enter state
public override void OnStateBegin()
{
EnemyInfo value = enemyInfo.value;
Debug.Log(value.displayName);
}
}
AnyParameterReference
Parameterを直接参照する場合はAnyParameterReferenceを使用します。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Arbor;
[AddComponentMenu("")]
public class EnemyInfoBehaviour2 : StateBehaviour {
[ClassExtends(typeof(EnemyInfo))]
public AnyParameterReference enemyInfo = new AnyParameterReference();
// Use this for enter state
public override void OnStateBegin()
{
Parameter enemyInfoParameter = enemyInfo.parameter;
if (enemyInfoParameter != null)
{
EnemyInfo value = enemyInfoParameter.value as EnemyInfo;
Debug.Log(value.displayName);
}
}
}

