グローバルコールバック
Boltでは、Bolt内で異なるアクションが起こった際に引かれる様々なグローバルコールバックメソッドへの接続が可能です。
これらのコールバックを実行するには、Unityにおける新たなC#スクリプトを作成し、MonoBehaviour
から継承するのではなくBolt.GlobalEventListener
を用いてください。
以下がその例です。
C#
using UnityEngine;
using System.Collections;
public class NetworkCallbacks : Bolt.GlobalEventListener {
}
例えば、新たなピアに接続したときに毎回Connected
メソッドを実装し、Boltにその通知をさせることができます。
実装できる全てのコールバックメソッドのリストは、APIドキュメント内にあります。
C#
using UnityEngine;
using System.Collections;
public class NetworkCallbacks : Bolt.GlobalEventListener {
public override void Connected(BoltConnection connection) {
Debug.Log(connection.ToString() + " connected to us");
}
}
重要:
BoltはC#のスタンダードなpublic override ...
を用いており、override
キーワードを指定する必要が無い場合にUnityがするような方法は用いていません。
Boltにコールバックスクリプトを検知させその上でメソッドを呼び出させるには2つの方法があります。最もベーシックな方法はデフォルトの'Unity的なもの'を施行し、スクリプトについて行うのと同様に、シーン内のどこかでゲームオブジェクトに付与する方法です。
もう1つは[BoltGlobalBehaviour]
属性を用いることで、以下のようにコールバックのクラス上でこの属性を指定すると、Boltは 自動的 にクラスを発見し、Boltと同期され、またBoltがシャットダウンされる際に削除されるインスタンスを作成します。
C#
using UnityEngine;
using System.Collections;
[BoltGlobalBehaviour]
public class NetworkCallbacks : Bolt.GlobalEventListener {
public override void Connected(BoltConnection connection) {
Debug.Log(connection.ToString() + " connected to us");
}
}
この属性を用いると、ゲームオブジェクトの保持を手動で行わなくて良くなります。
いくつかのオプションのカスタマイズが可能な属性に対して、いくつかのパラメータを指定することもできます。以下はその例です。
サーバ上でのみ呼び出されるコールバックが必要な場合、最初のパラメータ[BoltGlobalBehaviour(BoltNetworkModes.Server)]
としてBoltNetworkModes.Server
に
渡すことができます。これは、クライアント上でのみのコールバックが必要な場合にも同様です。その場合にはBoltNetworkModes.Client
が対応します。
また、シーン名[BoltGlobalBehaviour("Level1")]
に渡すことで、特定のシーンでのみアクティブとなるコールバックも取得できます。
いくつかのシーン名に交互に渡すこともできます[BoltGlobalBehaviour("Level1", "Level2")]
。
または、いくつかのシーン名に合致する正規表現を指定することもできます([BoltGlobalBehaviour(@"Level\d")])。
最後の方法として、クライアント/サーバーモードのオプションとシーン名フィルターを組み合わせることもできます。[BoltGlobalBehaviour(BoltNetworkModes.Server, @"Level\d")]
グローバルイベントコールバックのチートシート
上記で詳述したように、GlobalEventListener
はMonoBehaviour
を継承するため、Unity APIに既に存在するすべてのコールバックをその内部で使用できます(Start
、Update
など)。
Boltによって公開されるコールバックは、ゲームプレイ中に進行状況を通知したり、ゲームロジックで処理する必要があるイベントを呼び出したりすることを目的としています。
ここでは、Boltワークフローのメインエントリポイントである Bolt.GlobalEventListener
クラスを介してオーバーライドできるすべてのコールバックについて説明します。 また、コールバックを呼び出すことができる場所に割り当てられます。
サーバー | クライアント | 説明 | |
---|---|---|---|
初期化コールバック | |||
BoltStartBegin | Boltシミュレーションの開始前にトリガーされるコールバック。 | ||
BoltStartDone | Boltシミュレーションの開始後にトリガーされるコールバック。 | ||
BoltStartFailed | Boltが完全に初期化できなかったときにトリガーされるコールバック。 | ||
BoltShutdownBegin | Boltシミュレーションがシャットダウンするときにトリガーされるコールバック。 | ||
Connection Callbacks | |||
接続済み | ローカルインスタンスが別のリモートピアに接続したときにトリガーされるコールバック。 | ||
ConnectFailed | リモートサーバーへの接続が失敗したときにトリガーされるコールバック。 | ||
ConnectRequest | このインスタンスが着信クライアント接続を受信したときにトリガーされるコールバック。 | ||
ConnectAttempt | リモートエンドポイントに接続しようとしたときにトリガーされるコールバック。 | ||
ConnectRefused | リモートサーバーへの接続が拒否されたときにトリガーされるコールバック。 | ||
切断 | リモートエンドポイントから切断されたときにトリガーされるコールバック。 | ||
Entity Callbacks | |||
EntityReceived | Boltエンティティがネットワークから受信されたときにトリガーされるコールバック。 | ||
EntityAttached | 新しいエンティティがBoltシミュレーションにアタッチされると、トリガーされるコールバック。 | ||
EntityDetached | 新しいエンティティがBoltシミュレーションから切り離されると、トリガーされるコールバック。 | ||
EntityFrozen | Boltエンティティがフリーズしたときにトリガーされるコールバック。 | ||
EntityThawed | Boltエンティティが解凍されるとトリガーされるコールバック。 | ||
ControlOfEntityGained | このBoltのインスタンスがBoltエンティティの制御を受け取ったときにトリガーされるコールバック。 | ||
ControlOfEntityLost | このBoltのインスタンスがBoltエンティティの制御を失ったときにトリガーされるコールバック。 | ||
Scene Callbacks | |||
SceneLoadLocalBegin | 新しいローカルシーンが読み込まれる前にトリガーされるコールバック。 | ||
SceneLoadLocalDone | 新しいローカルシーンが完全に読み込まれた後にトリガーされるコールバック。 | ||
SceneLoadRemoteDone | リモート接続が現在のシーンを完全に読み込まれたときにトリガーされるコールバック。 | ||
Session Callbacks | |||
SessionCreatedOrUpdated | リクエストされたセッションの作成が成功したときにトリガーされるコールバック。 | ||
SessionConnected | リクエストされたセッションの作成が失敗したときにトリガーされるコールバック。 | ||
SessionConnectFailed | リクエストされたセッションの作成が失敗したときにトリガーされるコールバック。 | ||
SessionListUpdated | セッションリストが更新されたときにトリガーされるコールバック。 | ||
Stream Callbacks | |||
StreamDataReceived | バイナリストリームデータの受信時にトリガーされるコールバック。 | ||
StreamDataStarted | バイナリストリームデータの受信時にトリガーされるコールバック。 | ||
StreamDataProgress | バイナリストリームデータの新しいデータブロック受信時にトリガーされるコールバック。 | ||
StreamDataAborted | バイナリストリームが中断された時にトリガーされるコールバック。 |