I added a command to my game to switch levels (/level 0-2). It loads the level but it gets stuck on joining and the player doesn’t spawn for some reason, and I don’t know why. It should be re-instantiating the player OnJoinedRoom(). Here is my code.
Chat.cs
[RPC]
void ApplyGlobalChatText(string name, string msg)
{
ChatEntry entry = new ChatEntry();
entry.name = name;
entry.text = msg;
if (entry.text.Contains("/level 0"))
{
PhotonNetwork.isMessageQueueRunning = true;
PhotonNetwork.LoadLevel(0);
}
if (entry.text.Contains("/level 1"))
{
PhotonNetwork.isMessageQueueRunning = true;
PhotonNetwork.LoadLevel(1);
}
if (entry.text.Contains("/level 2"))
{
PhotonNetwork.isMessageQueueRunning = true;
PhotonNetwork.LoadLevel(2);
}
chatEntries.Add(entry);
if (chatEntries.Count > 4)
{
chatEntries.RemoveAt(0);
}
scrollPosition.y = 1000000;
//555 This was erasing chat for everyone
//inputField = "";
}
MPManger.cs
using UnityEngine;
using System.Collections;
public class MPManager : Photon.MonoBehaviour
{
public GameObject[] spawnPoints;
// Use this for initialization
void Start()
{
spawnPoints = GameObject.FindGameObjectsWithTag("SpawnPoint");
PhotonNetwork.ConnectUsingSettings("0.4");
//int spawnRand = Random.Range(0, spawnPoints.Length);
}
void OnGUI()
{
GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
}
void OnJoinedLobby()
{
PhotonNetwork.JoinRandomRoom();
}
void OnPhotonRandomJoinFailed()
{
PhotonNetwork.CreateRoom("Aftermath - AW");
}
void OnJoinedRoom()
{
//555 Stupid inconsistency with random.range, it starts at 1 instead of 0.
GameObject myPlayer = PhotonNetwork.Instantiate("Player_MP", spawnPoints[Random.Range(1, spawnPoints.Length)].transform.position, spawnPoints[Random.Range(1, spawnPoints.Length)].transform.rotation, 0);
string playerNumber = Random.Range(1, 1000).ToString();
myPlayer.GetComponent<PhotonView>().owner.name = playerNumber;
myPlayer.name = "Player" + playerNumber;
}
void OnDisconnectedFromPhoton()
{
//PhotonNetwork.DestroyPlayerObjects(photonView.ownerId);
//print(photonView.ownerId + " objects destroyed from server");
}
}
What am I doing wrong?
The spawnpoints are in each level also. Actually I just thought of something. Is start for the spawnpoints getting called when I switch levels? Maybe that is actually the problem. But I’m not getting a null ref. The mpmanger is on a gameobject prefab that is in every level.