【Unity】UnityでPhotonを使用して値を同期するときにはまったこと
先日、UnityのPhotonを使用して簡単な対戦ゲームを作る機会がありました。
Photonで変数の値を同期する場合は、
・OnPhotonSerializeViewメソッドを利用する
・RPCを使用する
などの方法があるかと思います。download Pirates of the Caribbean: Dead Men Tell No Tales 2017 movie now
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
int a1;
string a2;
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) {
if (stream.isWriting) {
//データの送信
stream.SendNext(a1);
stream.SendNext(a2);
} else {
//データの受信
a1 = (int)stream.ReceiveNext();
a2 = (string)stream.ReceiveNext();
}
}
|
OnPhotonSerializeViewを使用する場合は上記の様な感じですよね。
一方、RPCを利用する場合は
1
2
3
4
5
|
[PunRPC]
public void doHogeHoge(int i)
{
//何らかの処理
}
|
こんな感じで[PunRPC]マークをメソッドを上につけておきます。
呼び出す際には、まあ下記のようにします。
1
|
m_photonview.RPC(“doHogeHoge“, PhotonTargets.Others, i);
|
このときハマったのが、あたりまえなんですが
PhotonViewと一緒にコンポーネントにアタッチしているスクリプトのPRCじゃないと
当然よべないこと!
そんなメソッドねーよ!と怒られまくりました。
あとはアニメーションを同期するためにRPCを使用して呼び出したのですが
Triggerタイプは問題無いけどFlagだとどうも同期が怪しいこと。理由は謎のままでした。
でもサンプルを見てやればロビーの処理やRoom作成も簡単にできるので
ちょっとしたネットワーク対戦ならサクサクッと作れるのが魅力です。
ディスカッション
コメント一覧
まだ、コメントがありません