こちらは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);
		}
	}
}



