読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

stream.ReceiveNextでは同じ型の物を複数に送ったらどうなるのか、ルームに入れる人数制限の方法、指定したルームに入る方法【Unity】【Photon】

Unity Photon

このエントリーをはてなブックマークに追加

Photon関連で記事のするほどじゃないけど、まとめておきたいモノを複数列挙する感じの記事です。
Tipsみたいなものなのでそれぞれに関係はありません。


photonって何?設定の仕方は?みたいな事は以下の記事で。
iOSでオンラインゲーム開発はじめました【Unity】【photon】 - (:3[kanのメモ帳]


キャラクターを同期させるまでは以下の記事で。
photonの基本的な流れ【Unity】【photon】 - (:3[kanのメモ帳]


stream.ReceiveNextでは同じ型の物を複数に送ったらどうなるのか

以下のように同じ型(string)を複数送っても、送った順番に受け取れば問題ないようです。

//PhotonViewで観察している情報の更新時に呼ばれます。
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){ 

  //データを送る
  if (stream.isWriting) {
    //キャラ名
    stream.SendNext (_playerType);
    //ユーザ名
    stream.SendNext (_userName);
    //キャラのアニメーション
    stream.SendNext (_AnimationName);
  } 
  //データを受け取る
  else {
    _playerType          = (string)stream.ReceiveNext ();
    _userName           = (string)stream.ReceiveNext ();
    _AnimationName  = (string)stream.ReceiveNext ();
  }

}

安全を期すなら、送る順番と受け取る順番が変わらないようにメソッドを作る必要がありそうですね。


ルームに入れる人数制限の方法

以下のように、ルームを作る時の引数で設定出来ます。

//ルームを作る 
//roomName:部屋名
//isVisible:ロビーでルームリストにルームを表示
//isOpen:他のプレイヤーの参加させるか否か
//maxPlayers:参加出来る最大人数
PhotonNetwork.CreateRoom ( string roomName, bool isVisible, bool isOpen, int maxPlayers )

他にも色々設定できるようできるみたいですが、isOpenで他のプレイヤーを参加させない設定ってどこで使うんですかね…ルームを作った後で変更出来そうですがリファレンス読んでも分からず…また次の機会に!


指定したルームに入る方法

JoinRandomRoomを使うとランダムにルームに入りますが、以下のようにJoinRoomを使うと部屋名を指定してルームに入る事ができます。

//ランダムにルームに入る
PhotonNetwork.JoinRandomRoom();
//部屋名を指定してルームに入る
PhotonNetwork.JoinRoom(roomName);