# ParameterContainer

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

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

# ParameterContainerの追加

## GameObjectの作成

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

## GameObjectに追加

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

# ParameterContainerの編集

## パラメータの追加

- 「Parameters」の＋ボタンをクリック。
  追加したい型を選択。

## パラメータの編集

- 名前、値を選択し編集。

## パラメータの削除

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

## パラメータの検索

- 検索バーに名前を入力して検索。
  また検索タイプを選択することでタイプごとのフィルタリングができる。

# パラメータの種類

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

# Variableについて

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

詳しくは、「スクリプティング : Variable」を参照してください。

スクリプティング : Variable

# パラメータへのアクセス

## アクセスノードの作成

パラメータをグラフビューにドラッグ＆ドロップすることで、アクセスノードを作成できます。

- パラメータのドラッグエリアをドラッグ
- グラフビューの作成したい位置でドロップ。
- メニューから、GetかSetを選択。
  (Setノードの場合は、各種グラフの実行ノードが作成されます。作成したら実行されるように接続してください。)

## ParameterReferenceによるアクセス

ParameterReference関連クラスを持つスクリプトでは、値を扱うパラメータを設定できます。

### ParameterReferenceフィールドによる設定

- 参照したいパラメータを持つParameterContainerを設定。
- ドロップダウンからパラメータを設定。

### データスロットから入力

Containerフィールドはデータスロットからの入力にも対応しています。

- あらかじめParameterContainer型のデータを出力するノードを作成しておく。
- Containerフィールドのボタンをクリック。
- DataSlotを選択。
- データの入力スロットを接続。
- Parameterフィールドには参照したいパラメータ名を文字列で設定。
- (挙動によっては、Parameterのタイプも設定する必要があります)

データスロットについては、データフローを参照してください。

### パラメータをドラッグ&ドロップ

- 設定したいパラメータのドラッグエリアをドラッグ。
- 参照したいParameterReferenceへドロップ。

## パラメータを参照するスクリプトの作成

自作のスクリプトからパラメータを参照できます。

詳しくは、「スクリプティング : パラメータの参照」を参照してください。

スクリプティング : パラメータの参照

# GlobalParameterContainerについて

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

## GlobalParameterContainerの追加

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

## GlobalParameterContainerの設定

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

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

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

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

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

## StateBehaviour

スクリプト | 説明
--- | ---
CalcParameter | Parameterの値を演算して変更する。
SetBoolParameterFromUIToggle | Toggleの値をParameterに設定する。
SetFloatParameterFromUISlider | Sliderの値をParameterに設定する。
ParameterTransition | Parameterの値を判定して遷移する。

## Decorator

スクリプト | 説明
--- | ---
ParameterCheck | Parameterのチェック
ParameterConditionalLoop | Parameterの条件によるループ。

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

Arborリファレンス