イベント
中級 プログラマー
イベントは、スクリプト間の通信を容易にします。ブロードキャスターからレシーバーへの 1 方向のブロードキャストとして動作します。
たとえば、プレイヤーが死ぬと発生する「ゲーム オーバー」状態がゲームにあるものとします。これを処理するには、「ゲーム オーバー」イベントを作成し、イベントをリッスンしているレシーバーがあるすべてのスクリプトにブロードキャストできます。イベントがブロードキャストされると、レシーバーは適切なスクリプトを実行して、ゲーム オーバー イベントを処理します (敵のリセット、レベル オブジェクトの置換、新しいタイマーの開始、など)。
Note
イベントの処理はすべてスクリプト内で行われます。Game Studio で構成することはできません。
イベントを作成してブロードキャストする
Stride API のブロードキャスターは EventKey 型です。ブロードキャスターは、Broadcast メソッドを使用してイベントをレシーバーにブロードキャストします。
たとえば、次のコードは「ゲーム オーバー」イベントを作成します。
public static class GlobalEvents
{
public static EventKey GameOverEventKey = new EventKey("Global", "Game Over");
public static void SendGameOverEvent()
{
GameOverEventKey.Broadcast();
}
}
レシーバーを作成する
Stride API のレシーバーは EventReceiver 型です。
上で説明した「ゲーム オーバー」イベントを受け取るには、次のコードを使用します。
var gameOverListener = new EventReceiver(GlobalEvents.GameOverEventKey);
var gameIsOver = gameOverListener.TryReceive();
// または Async で
await gameOverListener.ReceiveAsync();