# データフロー

Arborにはグラフのノード間でデータを受け渡すための機能が備わっています。

# データの流れ

データの入出力スロットを接続するとデータフローを活用できます。

## 例

組み込みスクリプトを使用した例では以下のようなデータフローが簡単に組めるようになっています。

1. InstantiateGameObjectでプレハブをインスタンス化。
2. インスタンス化したGameObjectを出力。
3. Rigidbody.GetでRigidbodyコンポーネントを取り出し。
4. AddForceRigidbodyで受け取ったRigidbodyに力を加える。

また、例ではArborFSMを使用していますが、BehaviourTreeでも同様にデータの受け渡しができます。

## 参考リンク

- StateBehaviour : InstantiateGameObject
- StateBehaviour : AddForceRigidbody
- Calculator : Rigidbody.Get

# データスロットの使い方

## 接続

- データスロットのフィールドをドラッグ。
- 同じ型の対となるスロットにドロップ。

## 切断

- 接続ラインを右クリック。
- 「切断」を選択

# FlexibleField

FlexibleField関連クラスのフィールドでは、複数の参照方法を選択できますので柔軟に値が設定できます。

## 指定方法の選択

- フィールド横のボタンをクリック。
- タイプを選択。

## タイプ

項目 | 内容
--- | ---
Constant | 定数値。 値を設定するフィールドが表示される。
Parameter | パラメータを参照する。 パラメータについては ParameterContainer を参照してください。
Random(数値型のみ) | 指定範囲の中からランダムに取得する。
DataSlot | データの入力スロット。

# リルートノード

リルートノードを使用すると、データフローのラインを整理しやすくなります。

## リルートノードを作成して接続

- データスロットのフィールドをドラッグ。
- リルートノードを作成したいグラフ内の位置でドロップ
- メニューの”リルート”を選択

## リルートノード挿入

- 接続ライン上のリルートノードを作成したい位置を右クリック。
- メニューの”リルート”を選択。

## リルートノードの方向変更

- 方向を変更するリルートノードを選択
- 表示される方向アイコンをドラッグして方向を変更。

# 接続ラインについて

## 値表示

プレイ中に接続ラインをマウスオーバーすると、現在値が表示されます。

また、接続ラインの右クリックメニューから「データ値を常に表示」を選択すると、マウスオーバーしなくても表示されるようになります。

全ての接続ラインの値を表示したい場合は、ツールバーの「デバッグ」メニューから「すべてのデータ値を表示」を選択すると切り替わります。

## 右クリックメニュー

接続ライン上を右クリックすると、メニューが表示されます。

項目 | 内容
--- | ---
データ値を常に表示 | プレイ時にデータ値を常に表示します。
リルート | リルートノードを挿入します。
切断 | 切断します。

# 演算ノードについて

演算ノードはデータの入出力を持った演算用ノードです。

数値計算を行ったりフィールドにアクセスして出力したりできます。

## 演算ノードの作成

- Arbor Editorの適当な位置を右クリック。
- 「演算ノード作成」をクリック。
  作成したい演算ノードをリストから選択

## 組み込みCalculator

よく使用する演算ノードは初めから用意されています。

Arborリファレンス : Calculator リファレンス

# スクリプティング

自作したスクリプトからもデータフローを使用できます。

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

スクリプティング : データフロー