- Home /
Question by
TrivialRoo · Dec 21, 2013 at 04:51 PM ·
photonnullreferenceexceptionmessages
Serious Issues with NullReferenceException
Hello. I am encountering a problem in Unity3D. Everytime I want a message to show up, there is a NullReferenceException. I have problems with the while loop as well as the foreach statement.
This is my code. It seems to only be failing at around line 76, line 29, and line 31, so everything that has to do with the AddChatMessage function.
using UnityEngine;
using System.Collections.Generic;
public class NetworkManager : MonoBehaviour {
public GameObject standbyCamera;
SpawnSpot[] spawnSpots;
public bool offlineMode = false;
bool connecting = false;
List<string> chatMessages;
int maxChatMessages = 5;
// Use this for initialization
void Start () {
spawnSpots = GameObject.FindObjectsOfType<SpawnSpot>();
PhotonNetwork.player.name = PlayerPrefs.GetString ("Username", "N00B");
Debug.Log (chatMessages);
}
void OnDestroy() {
PlayerPrefs.SetString ("Username", PhotonNetwork.player.name);
}
public void AddChatMessage(string m) {
Debug.Log (chatMessages);
chatMessages.Add(m);
while(chatMessages.Count >= maxChatMessages) {
chatMessages.RemoveAt(0);
}
Debug.Log ("Added: " + m);
}
void Connect() {
PhotonNetwork.ConnectUsingSettings("0.11");
}
void OnGUI() {
GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
if(PhotonNetwork.connected == false && connecting == false) {
GUILayout.BeginArea (new Rect(0, 0, Screen.width, Screen.height));
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
GUILayout.BeginHorizontal();
GUILayout.Label("Username: ");
PhotonNetwork.player.name = GUILayout.TextField (PhotonNetwork.player.name);
GUILayout.EndHorizontal();
if(GUILayout.Button("Single Player")) {
connecting = true;
PhotonNetwork.offlineMode = true;
OnJoinedLobby ();
}
if(GUILayout.Button ("Multi-Player")) {
connecting = true;
Connect ();
}
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.EndArea ();
}
if(PhotonNetwork.connected == true && connecting == false) {
GUILayout.BeginArea (new Rect(0, 0, Screen.width, Screen.height));
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
foreach(string msg in chatMessages) {
GUILayout.Label(msg);
}
GUILayout.EndVertical();
GUILayout.EndArea ();
}
}
void OnJoinedLobby() {
Debug.Log("Joined Lobby");
PhotonNetwork.JoinRandomRoom();
}
void OnPhotonRandomJoinFailed() {
Debug.Log ("No Open Rooms!");
PhotonNetwork.CreateRoom(null);
}
void OnJoinedRoom() {
Debug.Log ("Joined room");
connecting = false;
SpawnMyPlayer();
}
void SpawnMyPlayer() {
AddChatMessage ("Spawning player: " + PhotonNetwork.player.name);
Debug.Log ("Added Name");
SpawnSpot mySpawnSpot = spawnSpots[Random.Range(0, spawnSpots.Length)];
GameObject myPlayerGO = (GameObject)PhotonNetwork.Instantiate("PlayerController", mySpawnSpot.transform.position, mySpawnSpot.transform.rotation, 0);
standbyCamera.SetActive(false);
//((MonoBehaviour)myPlayerGO.GetComponent("FPSInputController")).enabled = true;
((MonoBehaviour)myPlayerGO.GetComponent("MouseLook")).enabled = true;
((MonoBehaviour)myPlayerGO.GetComponent("PlayerMovement")).enabled = true;
((MonoBehaviour)myPlayerGO.GetComponent("PlayerShooting")).enabled = true;
//((MonoBehaviour)myPlayerGO.GetComponent("CharacterMotor")).enabled = true;
myPlayerGO.transform.FindChild("Main Camera").gameObject.camera.enabled = true;
Debug.Log (PhotonNetwork.isMasterClient);
}
}
Comment
Best Answer
Answer by robertbu · Dec 21, 2013 at 04:54 PM
You declare a variable, but you never create the actual list. Try changing line 13 to:
List<string> chatMessages = new List<string>();
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Unity3d Controls Not Working Win8 0 Answers
help with error CS0246 0 Answers
Receiving Windows messages in Unity 1 Answer
NullReferenceException 0 Answers