Avatars disappear when switching scenes
Hi! multiplayer question here. I'm creating a multiplayer VR game. In this game, I'm able to have a user select an avatar within the lobby, move outside the lobby to another room (e.g., Room #1). However, when I have them instantiate Room #2 from Room #1, their avatar data is lost. How can I maintain avatars during scene + room changes?
I'm getting the following error:
JoinOrCreateRoom failed. Client is on GameServer (must be Master Server for matchmaking) and ready. Wait for callback: OnJoinedLobby or OnConnectedToMaster. UnityEngine.Debug:LogError (object)
Here's my NetworkManager script
using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Pun; using Photon.Realtime; [System.Serializable] public class DefaultRoom{ public string Name; public int sceneIndex; public int maxPlayer; } public class NetworkManager : MonoBehaviourPunCallbacks { // Start is called before the first frame update public List<DefaultRoom> defaultRooms; public GameObject roomUI; public void ConnectToServer() { PhotonNetwork.ConnectUsingSettings(); Debug.Log("Trying to Connect to Server..."); } public override void OnConnectedToMaster() { base.OnConnectedToMaster(); Debug.Log("Connected to Server"); PhotonNetwork.JoinLobby(); } public override void OnJoinedLobby() { base.OnJoinedLobby(); Debug.Log("Joined Lobby"); roomUI.SetActive(true); } public void InitializeRoom(int defaultRoomIndex){ DefaultRoom roomSettings = defaultRooms[defaultRoomIndex]; //LOAD SCENE PhotonNetwork.LoadLevel(roomSettings.sceneIndex); //INSTANTIATE THE ROOM RoomOptions roomOptions = new RoomOptions(); roomOptions.MaxPlayers = (byte)roomSettings.maxPlayer; roomOptions.IsVisible = true; roomOptions.IsOpen = true; PhotonNetwork.JoinOrCreateRoom(roomSettings.Name, roomOptions, TypedLobby.Default); } public override void OnJoinedRoom() { base.OnJoinedRoom(); Debug.Log("Joined a Room"); } public override void OnPlayerEnteredRoom(Player newPlayer) { base.OnPlayerEnteredRoom(newPlayer); Debug.Log("A new player joined the room"); } }
And my NetworkPlayerSpawner script
using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Pun; public class NetworkPlayerSpawner : MonoBehaviourPunCallbacks { public GameObject spawnedPlayerPrefab; public override void OnJoinedRoom() { base.OnJoinedRoom(); spawnedPlayerPrefab = PhotonNetwork.Instantiate("Network Player", transform.position, transform.rotation); } public override void OnLeftRoom() { base.OnLeftRoom(); PhotonNetwork.Destroy(spawnedPlayerPrefab); } }
Any ideas for what I can do?
0
Answers
-
So clearly from the error you provided, you are not connected to the MasterClient so try figuring that out first.
0 -
I ended up teleporting them within the same room.
0