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