PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

グローバルコールバック

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

グローバルイベントコールバックのチートシート

上記で詳述したように、GlobalEventListenerMonoBehaviourを継承するため、Unity APIに既に存在するすべてのコールバックをその内部で使用できます(StartUpdateなど)。
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 バイナリストリームが中断された時にトリガーされるコールバック。
Back to top