# グラフの階層化

グラフの階層化を使えば、大まかな挙動と細かな挙動でグラフを分割できるため、柔軟なAIなどが組みやすくなります。

# サブグラフの作成

サブグラフを使用する際は、以下挙動スクリプトが付いたステートもしくはアクションを作成してください。

## SubStateMachine

子にステートマシンを持ち、ノードがアクティブになった際に実行します。

- Arborリファレンス : SubStateMachine(StateBehaviour)
- Arborリファレンス : SubStateMachine(ActionBehaviour)

## SubStateMachineReference

プレハブなどの外部ステートマシンを、子ステートマシンとして実行します。

- Arborリファレンス : SubStateMachineReference(StateBehaviour)
- Arborリファレンス : SubStateMachineReference(ActionBehaviour)

## SubBehaviourTree

子にビヘイビアツリーを持ち、ノードがアクティブになった際に実行します。

- Arborリファレンス : SubBehaviourTree(StateBehaviour)
- Arborリファレンス : SubBehaviourTree(ActionBehaviour)

## SubBehaviourTreeReference

プレハブなどの外部ビヘイビアツリーを、子ビヘイビアツリーとして実行します。

- Arborリファレンス : SubBehaviourTreeReference(StateBehaviour)
- Arborリファレンス : SubBehaviourTreeReference(ActionBehaviour)

# グラフの引数

親グラフと子グラフとの間でパラメータの受け渡しが可能です。

## 受け渡すパラメータの作成

- 子グラフをArborEditorで開く。
- サイドパネルのパラメータタブを開く。
- 親グラフとの受け渡しを行うパラメータを作成。
- 必要に応じて、GetとSetの可視設定を変更する。

## 子グラフでパラメータの受け取り

- 受け取るパラメータをグラフビューにドラッグ＆ドロップ。
- メニューからGetを選択。
- GetParameterの出力スロットから値を出力し、他ノードで値を使用。

## 子グラフでパラメータの設定

- 設定するパラメータをグラフビューにドラッグ＆ドロップ。
- メニューからSetを選択。
- 入力スロットに設定値を接続。

## 親グラフからパラメータを受け渡し

- 親グラフをArborEditorで開く。
- サブグラフの引数リストに受け渡したいパラメータを追加する。
- 固定値や入力スロットから値を設定。

## 子グラフからのパラメータを受け取り

- サブグラフの引数リストに受け取りたいパラメータを追加する。
- 出力スロットから値を出力し、他ノードで値を使用。

## 引数の更新タイミング

パラメータを更新するタイミングを指定できます。

- 更新タイミングフィールドをクリック。
- タイミングを選択。

### 更新タイミング

項目 | 説明
--- | ---
Enter | ノードがアクティブになり、子グラフが再生開始される際に更新
Execute | 毎フレーム、子グラフが実行される際に更新

## 引数の設定

引数にはGetやSetの可視設定が行えます。

Setを行わずパラメータの値を上書きしたくない場合などに使用して下さい。

- 引数の歯車アイコンをクリック
- 設定ウィンドウにて引数の設定。

### 引数設定ウィンドウ

項目 | 説明
--- | ---
Set | 入力フィールドの可視設定
Get | 出力フィールドの可視設定

## 実行される子グラフが確定していない場合

SubStateMachineReferenceなどで実行される子グラフが確定していない場合は、受け渡すパラメータ名やタイプなどを指定する必要があります。

- 引数リストの+ボタンをクリック。
- 引数作成ウィンドウにてパラメータ名やタイプなどを記入し作成。

### 引数作成ウィンドウ

項目 | 説明
--- | ---
Parameter Name | 受け渡したいパラメータの名前。 子グラフのパラメータと同名でなければならない。
Parameter Type | 受け渡したいパラメータのタイプ。 子グラフのパラメータと同じタイプでなければならない。
Reference Type (Parameter TypeがEnum、Component、Variableのみ) | 受け渡したいパラメータの型 子グラフのパラメータと同じ型でなければならない。
Set | 入力フィールドの可視設定
Get | 出力フィールドの可視設定

### 引数設定ウィンドウ

項目 | 説明
--- | ---
Parameter Name | 受け渡したいパラメータの名前。 子グラフのパラメータと同名でなければならない。
Parameter Type | 受け渡したいパラメータのタイプ。 子グラフのパラメータと同じタイプでなければならない。
Reference Type (Parameter TypeがEnum、Component、Variableのみ) | 受け渡したいパラメータの型 子グラフのパラメータと同じ型でなければならない。
Set | 入力フィールドの可視設定
Get | 出力フィールドの可視設定