ParameterContainer


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

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

ParameterContainerはグラフ間でのデータ共有などを行うために使用するコンポーネントです。

GameObjectにParameterContainerを追加し、各種ある型のパラメータを設定します。

ParameterContainerの追加

GameObjectの作成

HierarchyのCreateボタンをクリックするか右クリックしたメニューの「Create」から、
「Arbor > ParameterContainer」を選択すると、ParameterContainerが追加された状態のGameObjectが作成できます。

GIF

GameObjectに追加

  • 適用したいGameObjectを選択。
  • 「メニュー > Component > Arbor > ParameterContainer」を選択 。
  • あるいはInspectorの「Add Componentボタン > Arbor > ParameterContainer」を選択。
    GIF

ParameterContainerの編集

パラメータの追加

  • 「Parameters」の右下の+ボタンをクリック。
    追加したい型を選択。
    GIF

パラメータの編集

  • 名前、値を選択し編集。
    GIF

パラメータの削除

  • パラメータを選択し、-ボタンをクリック。
    GIF

パラメータの種類

種類 Inspector 説明
Int 符号付き32bit整数
Float 符号付き32bit浮動小数点数
Bool ブール
GameObject GameObjectの参照
String 文字列
Vector2 2次元ベクトル
Vector3 3次元ベクトル
Quaternion 4元数
Rect 2次元の矩形
Bounds 3次元空間の範囲
Color
Transform Transformコンポーネントの参照
RectTransform RectTransformコンポーネントの参照
Rigidbody Rigidbodyコンポーネントの参照
Rigidbody2D Rigidbody2Dコンポーネントの参照
Component コンポーネントの参照(型指定可能)
Long 符号付き64bit整数
Variable 自作可能なパラメータ型

Variableについて

Variableを使用するとパラメータを自作することができます。

詳しくは、「Variableによるパラメータのカスタマイズ」を参照してください。

Variableによるパラメータのカスタマイズ

パラメータの参照

ParameterReference

ParameterReference関連クラスをフィールドに宣言することで、パラメータを参照できるようになります。

スクリプト例

using UnityEngine;
using Arbor;

public class TestParameterReference : MonoBehaviour
{
	public IntParameterReference intParameter;

	void Start ()
	{
		if (intParameter.parameter != null)
		{
			Debug.Log(intParameter.parameter.name + " : " + intParameter.parameter.intValue);
		}	
	}
}

このスクリプトをGameObjectに追加すると以下のようになります。

Container 参照するParameterContainer
Parameter 参照するパラメータ

取得したParameterについては、スクリプトリファレンスを参照してください。

スクリプトリファレンス : Parameter

ParameterReference関連クラス

FlexibleField

FlexibleField関連クラスを使用すると、固定値の指定やパラメータ参照もしくはデータフローからの入力を切り替えて参照できます。

スクリプト例

using UnityEngine;
using Arbor;

[AddComponentMenu("")]
public class TestFlexibleFieldBehaviour : StateBehaviour
{
	public FlexibleInt flexibleInt;

	public override void OnStateBegin()
	{
		Debug.Log("flexibleInt : " + flexibleInt.value);
	}
}

このスクリプトをArborFSMのステートに追加すると以下のようになります。

フィールド右端にあるボタンをクリックすると参照方法が変更できます。

「Parameter」に変更することで、ParameterReferenceと同じように参照できるようになります。

FlexibleField関連クラス

参照する型の制約

AnyParameterReferenceComponentParameterReferenceは属性を指定することで、参照する型を制約することができます。

スクリプト例

using UnityEngine;
using Arbor;

[AddComponentMenu("")]
public class TestConstraintReferenceBehaviour : StateBehaviour
{
	[ClassExtends(typeof(AudioSource))]
	public ComponentParameterReference audioSource = new ComponentParameterReference();

	[ClassExtends(typeof(AudioSourceCurveType))]
	public AnyParameterReference audioSourceCurveType = new AnyParameterReference();

	public FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1));

	// Use this for enter state
	public override void OnStateBegin()
	{
		AudioSource source_ = null;
		Parameter audioSourceParameter = audioSource.parameter;
		if (audioSourceParameter != null)
		{
			source_ = audioSourceParameter.objectReferenceValue as AudioSource;
		}

		AudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff;
		Parameter curveTypeParameter = audioSourceCurveType.parameter;
		if (curveTypeParameter != null)
		{
			curveTypeParameter.GetVariable<AudioSourceCurveType>(ref curveType_);
		}

		AnimationCurve curve_ = curve.value;

		if (source_ == null)
		{
			return;
		}

		source_.SetCustomCurve(curveType_, curve_);
	}
}

スクリプトを追加した例

ParameterContainer例

(AudioSourceCurveTypeはVariableを作成して登録しました)

使用できる属性

クラス 属性
AnyParameterReference
ComponentParameterReference

指定の他、Componentクラスに制約される。

FlexibleComponent

指定の他、Componentクラスに制約される。

GlobalParameterContainerについて

GlobalParameterContainerはシーンを変更しても保持しておきたいパラメータがある場合に使用するコンポーネントです。

GlobalParameterContainerの追加

  • 適用したいGameObjectを選択。
    「メニュー > Component > Arbor > GlobalParameterContainer」を選択 。
  • あるいはInspectorの「Add Componentボタン > Arbor > GlobalParameterContainer」を選択。
    GIF
  • また、HierarchyのCreateボタン「Arbor > GlobalParameterContainer」からGlobalParameterContainerがアタッチされた状態のGameObjectが作成できる。
    GIF

GlobalParameterContainerの設定

  • あらかじめシーン間で共有したいパラメータを設定したParameterContainerを作成し、Prefab化。
  • GlobalParameterContainerが追加されているGameObjectを選択。
    InspectorのPrefabに作成しておいたParameterContainerのPrefabを指定。
    GIF

GlobalParameterContainer経由でパラメータを参照

ParameterReferenceのContainerフィールドにGlobalParameterContainerを指定するとパラメータが参照できるようになります。

関連する組み込みスクリプト

ここでは主にParameterContainerを参照する組み込みスクリプトを一部紹介します。

StateBehaviour

CalcParameter Parameterの値を演算して変更する。
SetBoolParameterFromUIToggle Toggleの値をParameterに設定する。
SetFloatParameterFromUISlider Sliderの値をParameterに設定する。
ParameterTransition Parameterの値を判定して遷移する。

Decorator

ParameterCheck Parameterのチェック
ParameterConditionalLoop Parameterの条件によるループ。

他にも、FlexibleFieldを使用して値を取得する組み込みスクリプトが多数ありますのでリファレンスを参照してみてください。

Arborリファレンス