Trouble changing rooms

I had posted this question previously, but foolishly made some edits and I think I confused the subject. I have since cleaned up the code and posted it on Stack Overflow for easier viewing.

Any assistance would be appreciated.

Answers

  • Oh wow, I discovered if you paste code here from SO it actually looks good. Posting from Visual Studio results in a mess of unformatted text.

    using Assets.Programming.Config;
    using System.Collections;
    using UnityEngine;
    using Photon.Pun;
    using Photon.Realtime;
    
    public class NetworkManager : Photon.Pun.MonoBehaviourPunCallbacks
    {
    
        private string RoomName = "Default_Room";
        private string LobbyName = "Default_Lobby";
    
        void Start()
        {
            PhotonNetwork.NickName = "Logging In...";
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        private void LogPhotonDebugInfo(string functionName)
        {
            string roomName = RoomName ?? "NULL";
            string lobbyName = LobbyName ?? "NULL";
            string currentLobbyName = PhotonNetwork.CurrentLobby?.Name ?? "NULL";
            string currentRoomName = PhotonNetwork.CurrentRoom?.Name ?? "NULL";
    
            Debug.Log("[PHOTON] " + functionName + "() [RoomName: " + roomName + ", LobbyName: " + lobbyName + ", PhotonNetwork.CurrentLobby.Name: " + currentLobbyName + ", PhotonNetwork.CurrentRoom.Name: " + currentRoomName + "]");
        }
    
        public override void OnConnectedToMaster()
        {
            base.OnConnectedToMaster();
            LogPhotonDebugInfo("OnConnectedToMaster");
            TypedLobby myLobby = new TypedLobby(LobbyName, LobbyType.Default);
            PhotonNetwork.JoinLobby(myLobby);
        }
    
        public override void OnJoinedLobby()
        {
            base.OnJoinedLobby();
            LogPhotonDebugInfo("OnJoinedLobby");
            RoomOptions roomOptions = new RoomOptions();
            roomOptions.MaxPlayers = 20;
            PhotonNetwork.JoinOrCreateRoom(RoomName, roomOptions, TypedLobby.Default);
        }
    
        public override void OnLeftLobby()
        {
            base.OnLeftLobby();
            LogPhotonDebugInfo("OnLeftLobby");
        }
    
        public override void OnLeftRoom()
        {
            base.OnLeftRoom();
            LogPhotonDebugInfo("OnLeftRoom");
            PhotonNetwork.Disconnect();
        }
    
        public override void OnDisconnected(DisconnectCause cause)
        {
            base.OnDisconnected(cause);
            LogPhotonDebugInfo("OnDisconnected");
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        public override void OnJoinedRoom()
        {
            base.OnJoinedRoom();
            LogPhotonDebugInfo("OnJoinedRoom");
            if (!hasSpawned) {
                SpawnMyPlayer();
                hasSpawned = true;
            }
        }
    
        public void SwitchRoom(string newRoomName)
        {
            if (PhotonNetwork.IsConnectedAndReady)
            {
                Debug.Log("[PHOTON] SwitchRoom() [newRoomName: " + newRoomName + "]");
                RoomName = newRoomName;
                PhotonNetwork.LeaveRoom();
            }
        }
    }
    


  • I have this comment draft that will NOT go away.

    using Assets.Programming.Config;
    using System.Collections;
    using UnityEngine;
    using Photon.Pun;
    using Photon.Realtime;
    
    public class NetworkManager : Photon.Pun.MonoBehaviourPunCallbacks
    {
    
        private string RoomName = "Default_Room";
        private string LobbyName = "Default_Lobby";
    
        void Start()
        {
            PhotonNetwork.NickName = "Logging In...";
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        private void LogPhotonDebugInfo(string functionName)
        {
            string roomName = RoomName ?? "NULL";
            string lobbyName = LobbyName ?? "NULL";
            string currentLobbyName = PhotonNetwork.CurrentLobby?.Name ?? "NULL";
            string currentRoomName = PhotonNetwork.CurrentRoom?.Name ?? "NULL";
    
            Debug.Log("[PHOTON] " + functionName + "() [RoomName: " + roomName + ", LobbyName: " + lobbyName + ", PhotonNetwork.CurrentLobby.Name: " + currentLobbyName + ", PhotonNetwork.CurrentRoom.Name: " + currentRoomName + "]");
        }
    
        public override void OnConnectedToMaster()
        {
            base.OnConnectedToMaster();
            LogPhotonDebugInfo("OnConnectedToMaster");
            TypedLobby myLobby = new TypedLobby(LobbyName, LobbyType.Default);
            PhotonNetwork.JoinLobby(myLobby);
        }
    
        public override void OnJoinedLobby()
        {
            base.OnJoinedLobby();
            LogPhotonDebugInfo("OnJoinedLobby");
            RoomOptions roomOptions = new RoomOptions();
            roomOptions.MaxPlayers = 20;
            PhotonNetwork.JoinOrCreateRoom(RoomName, roomOptions, TypedLobby.Default);
        }
    
        public override void OnLeftLobby()
        {
            base.OnLeftLobby();
            LogPhotonDebugInfo("OnLeftLobby");
        }
    
        public override void OnLeftRoom()
        {
            base.OnLeftRoom();
            LogPhotonDebugInfo("OnLeftRoom");
            PhotonNetwork.Disconnect();
        }
    
        public override void OnDisconnected(DisconnectCause cause)
        {
            base.OnDisconnected(cause);
            LogPhotonDebugInfo("OnDisconnected");
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        public override void OnJoinedRoom()
        {
            base.OnJoinedRoom();
            LogPhotonDebugInfo("OnJoinedRoom");
            if (!hasSpawned) {
                SpawnMyPlayer();
                hasSpawned = true;
            }
        }
    
        public void SwitchRoom(string newRoomName)
        {
            if (PhotonNetwork.IsConnectedAndReady)
            {
                Debug.Log("[PHOTON] SwitchRoom() [newRoomName: " + newRoomName + "]");
                RoomName = newRoomName;
                PhotonNetwork.LeaveRoom();
            }
        }
    }
    


  • I did not debug the code but as OnLeftRoom() logs the RoomName as "Default_Room", even after calling SwitchRoom, clearly something else is going on. I doubt it's a PUN issue. No idea, sorry.

  • using Assets.Programming.Config;
    using System.Collections;
    using UnityEngine;
    using Photon.Pun;
    using Photon.Realtime;
    
    public class NetworkManager : Photon.Pun.MonoBehaviourPunCallbacks
    {
    
        private string RoomName = "Default_Room";
        private string LobbyName = "Default_Lobby";
    
        void Start()
        {
            PhotonNetwork.NickName = "Logging In...";
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        private void LogPhotonDebugInfo(string functionName)
        {
            string roomName = RoomName ?? "NULL";
            string lobbyName = LobbyName ?? "NULL";
            string currentLobbyName = PhotonNetwork.CurrentLobby?.Name ?? "NULL";
            string currentRoomName = PhotonNetwork.CurrentRoom?.Name ?? "NULL";
    
            Debug.Log("[PHOTON] " + functionName + "() [RoomName: " + roomName + ", LobbyName: " + lobbyName + ", PhotonNetwork.CurrentLobby.Name: " + currentLobbyName + ", PhotonNetwork.CurrentRoom.Name: " + currentRoomName + "]");
        }
    
        public override void OnConnectedToMaster()
        {
            base.OnConnectedToMaster();
            LogPhotonDebugInfo("OnConnectedToMaster");
            TypedLobby myLobby = new TypedLobby(LobbyName, LobbyType.Default);
            PhotonNetwork.JoinLobby(myLobby);
        }
    
        public override void OnJoinedLobby()
        {
            base.OnJoinedLobby();
            LogPhotonDebugInfo("OnJoinedLobby");
            RoomOptions roomOptions = new RoomOptions();
            roomOptions.MaxPlayers = 20;
            PhotonNetwork.JoinOrCreateRoom(RoomName, roomOptions, TypedLobby.Default);
        }
    
        public override void OnLeftLobby()
        {
            base.OnLeftLobby();
            LogPhotonDebugInfo("OnLeftLobby");
        }
    
        public override void OnLeftRoom()
        {
            base.OnLeftRoom();
            LogPhotonDebugInfo("OnLeftRoom");
            PhotonNetwork.Disconnect();
        }
    
        public override void OnDisconnected(DisconnectCause cause)
        {
            base.OnDisconnected(cause);
            LogPhotonDebugInfo("OnDisconnected");
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        public override void OnJoinedRoom()
        {
            base.OnJoinedRoom();
            LogPhotonDebugInfo("OnJoinedRoom");
            if (!hasSpawned) {
                SpawnMyPlayer();
                hasSpawned = true;
            }
        }
    
        public void SwitchRoom(string newRoomName)
        {
            if (PhotonNetwork.IsConnectedAndReady)
            {
                Debug.Log("[PHOTON] SwitchRoom() [newRoomName: " + newRoomName + "]");
                RoomName = newRoomName;
                PhotonNetwork.LeaveRoom();
            }
        }
    }
    


  • It looks like if you paste from SO, code looks decent?

    using Assets.Programming.Config;
    using System.Collections;
    using UnityEngine;
    using Photon.Pun;
    using Photon.Realtime;
    
    public class NetworkManager : Photon.Pun.MonoBehaviourPunCallbacks
    {
    
        private string RoomName = "Default_Room";
        private string LobbyName = "Default_Lobby";
    
        void Start()
        {
            PhotonNetwork.NickName = "Logging In...";
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        private void LogPhotonDebugInfo(string functionName)
        {
            string roomName = RoomName ?? "NULL";
            string lobbyName = LobbyName ?? "NULL";
            string currentLobbyName = PhotonNetwork.CurrentLobby?.Name ?? "NULL";
            string currentRoomName = PhotonNetwork.CurrentRoom?.Name ?? "NULL";
    
            Debug.Log("[PHOTON] " + functionName + "() [RoomName: " + roomName + ", LobbyName: " + lobbyName + ", PhotonNetwork.CurrentLobby.Name: " + currentLobbyName + ", PhotonNetwork.CurrentRoom.Name: " + currentRoomName + "]");
        }
    
        public override void OnConnectedToMaster()
        {
            base.OnConnectedToMaster();
            LogPhotonDebugInfo("OnConnectedToMaster");
            TypedLobby myLobby = new TypedLobby(LobbyName, LobbyType.Default);
            PhotonNetwork.JoinLobby(myLobby);
        }
    
        public override void OnJoinedLobby()
        {
            base.OnJoinedLobby();
            LogPhotonDebugInfo("OnJoinedLobby");
            RoomOptions roomOptions = new RoomOptions();
            roomOptions.MaxPlayers = 20;
            PhotonNetwork.JoinOrCreateRoom(RoomName, roomOptions, TypedLobby.Default);
        }
    
        public override void OnLeftLobby()
        {
            base.OnLeftLobby();
            LogPhotonDebugInfo("OnLeftLobby");
        }
    
        public override void OnLeftRoom()
        {
            base.OnLeftRoom();
            LogPhotonDebugInfo("OnLeftRoom");
            PhotonNetwork.Disconnect();
        }
    
        public override void OnDisconnected(DisconnectCause cause)
        {
            base.OnDisconnected(cause);
            LogPhotonDebugInfo("OnDisconnected");
            PhotonNetwork.ConnectUsingSettings(PhotonNetwork.PhotonServerSettings.AppSettings);
        }
    
        public override void OnJoinedRoom()
        {
            base.OnJoinedRoom();
            LogPhotonDebugInfo("OnJoinedRoom");
            if (!hasSpawned) {
                SpawnMyPlayer();
                hasSpawned = true;
            }
        }
    
        public void SwitchRoom(string newRoomName)
        {
            if (PhotonNetwork.IsConnectedAndReady)
            {
                Debug.Log("[PHOTON] SwitchRoom() [newRoomName: " + newRoomName + "]");
                RoomName = newRoomName;
                PhotonNetwork.LeaveRoom();
            }
        }
    }