グローバルコールバック

Boltでは、Bolt内で異なるアクションが起こった際に引かれる様々なグローバルコールバックメソッドへの接続が可能です。 これらのコールバックを実行するには、Unityにおける新たなC#スクリプトを作成し、MonoBehaviourから継承するのではなくBolt.GlobalEventListenerを用いてください。 以下がその例です。

using UnityEngine;
using System.Collections;

public class NetworkCallbacks : Bolt.GlobalEventListener {

}

例えば、新たなピアに接続したときに毎回Connectedメソッドを実装し、Boltにその通知をさせることができます。 実装できる全てのコールバックメソッドのリストは、APIドキュメント内にあります。

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がシャットダウンされる際に削除されるインスタンスを作成します。

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")]

ドキュメントのトップへ戻る