# EventComponent

EventComponentをC#スクリプトで記述できます。

## 作成方法

1. Projectウィンドウの「+」ボタンをクリック。
2. メニューからLogic Toolkit > Scripts > Event Component C# Scriptを選択。
3. スクリプト名を入力し、Enterで決定。

## スクリプトの書き方

- `LogicToolkit.EventComponent`を継承したクラスを作成します。
- 型に`System.SerializableAttribute`を適用します。
- アクティブになった際に`protected override void OnActivated()`が呼ばれます。
  主にイベントの購読の処理を行います。
- 非アクティブになった際に`protected override void OnDeactivated()`が呼ばれます。 主にイベントの購読解除の処理を行います。
- 必要に応じて`LogicToolkit.IUpdateReceiver`を実装し、状況の判定などを`void OnUpdate()`で行います。
- イベントが呼び出されたと判断した際は`OnEvent()`を呼び出します。

## コード例

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using LogicToolkit;

    [System.Serializable]
    public class EventExample : EventComponent
    {
        // OnActivated is called when activated.
        protected override void OnActivated()
        {
            // Subscribe to some event and call OnEvent() from your callback.
            Application.focusChanged += OnFocusChanged;
        }

        void OnFocusChanged(bool focus)
        {
            Debug.Log(focus);
            OnEvent();
        }

        // OnDeactivated is called when it is deactivated.
        protected override void OnDeactivated()
        {
            // Unsubscribe from some event
            Application.focusChanged -= OnFocusChanged;
        }
    }

この例では、アプリケーションのフォーカスが切り替わった際にフォーカスの有無をConsoleに出力しながらイベントが来たことをノードに通知します。
UnityEditor上でテストプレイする際は、Gameウィンドウと他のウィンドウを交互にクリックしてフォーカスを切り替えるなどで確認してください。

なお、スクリプトの生成で`Application.focusChanged`を選択することで同様のスクリプトを作成可能です。