# ノードコンポーネント

ノードが実行中に処理を行うノードコンポーネントについて説明します。

## 基本的なノードコンポーネント

- EventComponent
  イベントが来たことをノードに伝える処理を行うノードコンポーネントです。
  Unityのメッセージ(OnCollisionEnterなど)や入力イベントなどを待つ場合に利用します。
- ActionComponent
  一瞬で完了する処理を行うノードコンポーネントです。
  メンバーの呼び出しやデータの演算などに利用します。
- EvaluateComponent
  条件判定を行うノードコンポーネントです。
  ステートの遷移判定やビヘイビアツリーの実行判定などに利用します。
- TaskComponent
  継続的に実行する処理を行うノードコンポーネントです。
  時間経過の待機やトゥイーン処理、非同期処理の完了待ちなどに利用します。
- ServiceComponent
  結果を返さずに常時実行する処理を行うノードコンポーネントです。
- CompositeComponent
  BehaviorTreeの子ノードの実行を制御するコンポーネントです。
- Decorator
  BehaviorTreeの実行判定を行う処理を行うノードコンポーネントです。

## ノードとの関係

ノードが どのように実行するか を定義したものであるのに対し、ノードコンポーネントは どのような処理を行うか を定義したものとなります。
ノードが実行される際に、各種ノードコンポーネントに定義した処理を行います。
ノードによってはノードコンポーネントの処理結果を使用して接続先ノードの実行などを行います。

各ノード型と利用できる基本的なノードコンポーネント型の関係図は以下の通りです。

| EventComponent | ActionComponent | EvaluateComponent | TaskComponent | ServiceComponent
--- | --- | --- | --- | --- | ---
Action |  | ✅ | ✅ |  |
Task | ✅ |  | ✅ | ✅ |
State | ✅ | ✅ | ✅ | ✅ | ✅
BehaviorTree メイン | ✅ | ✅ | ✅ | ✅ |
BehaviorTree Decorators1 |  |  | ✅ |  |
BehaviorTree Services |  | ✅ | ✅ | ✅ | ✅
Service |  | ✅ | ✅ | ✅ | ✅
Signal Evaluation |  |  | ✅ | ✅ |
Compute |  | ✅2 | ✅ |  |

1. Decoratorも使用できます。 ↩︎

2. 出力DataPortがある場合のみ使用できます。 ↩︎