PUN2 イベント同期
今日はイベント同期.
RPC (Remote Procedure Call)
サーバーを介して他クライアントのメソッドを呼び出すことも可能. 一般的にRPCと呼ばれる同期方法を使う.
イベントなどの離散的な値を同期させるのにRPCが向いている. 以下のメソッドを使う.
PhotonVIew.Get(PhotonViewのインスタンス).RPC("イベントハンドラ名", RpcTarget.All, args)
引数のRpcTargetは列挙型で,RPCの送信相手とそのバッファリング方法を指定できる. Bufferedを指定→後からルームに入ってきたプレイヤーにも最新の状態での同期が可能になる. ViaServerを指定→イベントの発火順序が保証される.
enum RpcTarget {
All, Others, MasterClient,
AllBuffered, OthersBuffered,
AllViaServer, AllBufferedViaServer
}
同期できる型は以下.
byte, byte[] int, int[] float, float[] string, string[] Vector3, Quaternion
サンプルプログラムはこんな感じ.
// RPCイベント同期 IEnumerator メソッド名(){ while(true){ //定期的に変更する場合はコルーチンを利用 PhotonView.Get(this).RPC( "イベントハンドラ名", RpcTarget.All, args ); yield return new WaitForSeconds( 2f ); } } // 受信ハンドラ側に[RPC]attributeを付加する [PunRPC] void イベントハンドラ名( T args){ }