Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@azarashin

PUN2 でRoom のリストを作ろうとしたけどOnRoomListUpdate が呼び出されない

症状

こんな感じのコードを書いた。
このアプリを起動した状態で、
他のプロセスで同じPhoton のApp ID でPhotonNetwork を使ってルームを生成しているにもかかわらず、
ルームリスト更新のメソッドOnRoomListUpdate が呼び出されない。。。

public class NetworkInterface : MonoBehaviourPunCallbacks
{
     // ルームリストに更新があった時
    public override void OnRoomListUpdate(List<RoomInfo> roomList)
    {
        Debug.Log("OnRoomListUpdate");
        _roomList = roomList.Where(s => s.IsOpen).Select(s => RoomToString(s)).ToList(); 
    }
}

原因

PUN にはAuto Join Lobbyというプロパティがあって、アプリが起動したら勝手にロビーに入ってくれるような機能があったので、その時の感覚でやってたのがまずかった。
どうもPUN2 になってからAuto Join Lobby が廃止されたようで。。。

によると、"PhotonNetwork.autoJoinLobby is gone. Unless you need a lobby, don't join them." らしい。
ロビーに入らなくても部屋には入れるようです。むしろ必要ないならロビーに入るな、らしい。
一方、

によると、部屋の一覧を取得するには

"The OnRoomListUpdate() method is called only when you've explicitly joined the lobby via PhotonNetwork.JoinLobby()."

つまりロビーに入ってなければならないとのこと。ルームに入れる状態であってもロビーに入ってないと部屋の一覧は分からないらしい。そりゃそうか。
ということで、明示的にロビーに入るようにコードを追加。

public class NetworkInterface : MonoBehaviourPunCallbacks
{
    // マスターサーバーへの接続が成功した時に呼ばれるコールバック
    public override void OnConnectedToMaster()
    {
        PhotonNetwork.JoinLobby();
    }

    // ロビーに入った時
    public override void OnJoinedLobby()
    {
        Debug.Log("OnJoinedLobby");
    }

     // ルームリストに更新があった時
    public override void OnRoomListUpdate(List<RoomInfo> roomList)
    {
        Debug.Log("OnRoomListUpdate");
        _roomList = roomList.Where(s => s.IsOpen).Select(s => RoomToString(s)).ToList(); 
    }
}

無事OnRoomListUpdate が呼び出されました!

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What is going on with this article?