Event ノード
Note
バージョン 2019/2020 LTS を使用している場合は Unity Asset Store から Visual Scripting パッケージをダウンロードしてください。
スクリプティングノードはイベントをリッスンします。これは全てのスクリプトの開始点であり、グラフ内で特殊な緑色のノードとして表示されます。
イベントには多くの種類があり、ルートの Events カテゴリ (fuzzy finder > Events) の下のサブカテゴリ内にグループ化されています。
2 つの単純で一般的なイベントは Start と Update で、これらは両方とも Lifecycle の下にあります。
- Start は、グラフあるいはイベントハンドラーが初めて作成された時に 1 回飛び出されます。
- Update は、グラフあるいはイベントハンドラーがアクティブな時にフレーム毎に呼び出されます。
新しい Script Machine (スクリプトマシン) は、デフォルトで、この 2 つの両方のイベントから開始されます。
入力 (Input) と 出力 (Output)
全てのイベントは、トリガーされた時にスクリプトを開始させる Trigger 制御出力を 1 つ持っています。
値入力は、イベントがトリガーされるタイミングに影響するオプションです。例えば、一部のイベントには、それをリッスンするオブジェクトを指定する Target 設定があります。ほとんどの場合、この設定はデフォルト値の Self のままにします。
イベントの値出力は、そのイベントから渡される引数で、実際に起きた事に関する情報を提供します。例えばこの On Trigger Enter イベントの場合、衝突に関与したもう片方のコライダーが 1 つの出力になります。
Custom Event
Custom Event は特殊なタイプのイベントで、複数のグラフでカスタムイベントとそのカスタム引数をトリガーします。
例えば、キャラクターの体力を減らすために呼び出される On Damage というカスタムイベントを作成する場合、このイベントは、与えるダメージの量を示す整数引数を 1 つ持っている必要があります。(Events の下にある) Custom Event ノードを作成することでイベントをリッスンします。名前を On Damage にします。名前の下で、引数カウントを 1 に設定します。
Note
インデックスはゼロから開始されるので、最初の引数のラベルは Arg. 0 になります。
イベントを他の場所からトリガーするには、ファジーファインダー内で Custom Event ノードのすぐ下にある Trigger Custom Event ノードを使用します。イベント名は、大文字と小文字を区別しスペースを認識するので、正確に入力してください。
例えば、プレイヤーに命中することのできる石の Script Machine (スクリプトマシン) を作成する場合、衝撃力をダメージとして使用します。
石とともに衝突するコライダーがトリガーのターゲットです。On Damage イベントは、そのコライダーに添付された全てのマシンでトリガーされます。ダメージの値を使用してレシーバーオブジェクトから体力を減算します。
カスタムイベントはレシーバーを必要とせず、それを処理するリスナーがなくてもエラーを発生させません。
Animation Event
アニメーションイベントを使用して、アニメーション内の特定の時点に達した時に Bolt グラフをトリガーできます。マシンとアニメーターを持つオブジェクトを選択してください。次に、Animation ウィンドウからアニメーションイベントを追加します。
イベントが選択された状態で、Inspector から関数として TriggerAnimationEvent を選択してください。
Inspector から任意のパラメーターを使用してください。
Script Graph (スクリプトグラフ) 内に、(Events >Animation の下にある) Animation Event ノードを追加します。
イベントには以下の 2 つのタイプがあります。
- グローバルアニメーションイベント
- 名前付きアニメーションイベント
この 2 つの違いは、前者がオブジェクト上の全てのアニメーションイベントをリッスンして文字列パラメーターを返すのに対し、後者のトリガーは指定された名前入力と等しい文字列パラメーターである点です。
Unity Event
Unity Event は、Inspector から設定されたイベントをトリガーします。これはボタンなどの GUI 要素内によく見られますが、カスタムスクリプトからも作成可能です。
設定を行うには、マシンを持つオブジェクトを選択し、Trigger Unity Event メソッドを選択します。文字列フィールド内にグラフ内でリッスンするイベント名を入力し、グラフ内に同じ名前の UnityEvent ノードを追加します。
追加的な引数は Unity イベントではサポートされていません。
Events API
Visual Scripting は、C# スクリプトからカスタムイベントをトリガーする簡単な API を提供しています。
API にアクセスする C# スクリプトに以下の using を追加してください。
using Unity.VisualScripting
Triggering API
カスタムイベントをトリガーするには 1 回のイベント呼び出しが必要です。引数を必要な数だけ渡してください。
CustomEvent.Trigger(targetGameObject, argument1, argument2, ...)
例えば、このカスタムイベントノードは、
このコードでトリガーできます。
CustomEvent.Trigger(enemy, "Damage", 30);