Cat Shrine

Unityを使ってAndroid,iOS向けにゲームを作っています。

PUN2でルームの一覧表を取得する方法ーPhotonNetwork2,PUN2,unity,Unityでオンライン対戦を作る

走り書きですみませんが、PhotonRealtime One-timeでルームの一覧を取得する方法をメモ代わりに残しておきたいと思います。

公式ドキュメントに詳しい事も描いていなくて、取得に苦労したので誰かのヒントになれれば幸いです。

 

詳しくはAsteroidsデモに書いています

PUN2をインストールした際、いくつかデモがインストールされているはずです。

Projectウィンドウから「DemoAsteroids」で検索をかけると、DemoAsteroids-LobbySceneがあり、こいつにルーム一覧のサンプルソースが載っています。

f:id:AGB5002:20200126160226j:plain

場所:/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/

 

この中の LobbyMainPanel.csに、詳しい事が載っています。
(見つからなかったら検索かけてみてね)

ここでやっているのは

 

①void OnRoomListUpdate(List roomList)でコールバックを取得

②コールバック内でリストに記録する

③②で記録したキャッシュを参照してルーム一覧を確認する

 

 次でその中身について説明します。

 

ソース全文

先に全文載せておきます。詳しい解説は以下で…

 

何をしているのか詳しく

①MonoBehaviourPunCallbacksを継承する(7行目)

②ルーム一覧表を記録しておくキャッシュ用リストを準備する(9・14行目)

②マスターサーバーにアクセスする(15行目)

③ロビーに入る(26行目)

※ロビーに入らないとコールバックを受け取れないようです。

 

④ルームに更新があったときだけコールバックを受け取る(34行目)

ここでキャッシュを取ったり、表示を変更したりできます。

PUNであった、PhotonNetwork.GetRoomList()に代わる機能となります。

なんでPUN2で消されちゃったの……。

PUN2とPUN1の違いについてはいかに記載があります。

doc.photonengine.com

⑤ルームリストのキャッシュの更新(42行目)

⑥キャッシュにアクセスして情報取得(69行目)
info.Nameで部屋名、(byte)info.PlayerCountで部屋にいる人数、info.MaxPlayersで定員を参照しています。
他にも色々な情報を取得できると思います。以下の公式ドキュメントをご参照ください。

公式リファレンス:Photon Unity Networking 2: RoomInfo Class Reference

 

以上になります

走り書きですみませんが以上でPUN2でルームリストの一覧が取得できました。