- Home /
Getting error when making a chat system
This is my error:
NullReferenceException: Object reference not set to an instance of an object
NetworkManager.AddChatMessage (System.String m) (at Assets/Scripts/Network/NetworkManager.cs:30)
From this tutorial
This is the code the error is coming from:
using UnityEngine;
using System.Collections.Generic;
public class NetworkManager : MonoBehaviour {
public GameObject standbyCamera;
SpawnSpot[] spawnSpots;
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", "Player");
chatMessages = new List<string>();
}
void OnDestroy() {
PlayerPrefs.GetString ("Username", PhotonNetwork.player.name);
//Hashtable props = new Hashtable ();
//props["asdasda"] = 2;
//PhotonNetwork.player.SetCustomProperties(props);
}
public void AddChatMessage(string m) {
GetComponent<PhotonView>().RPC ("AddChatMessage_RPC", PhotonTargets.All, m);
}
[RPC]
void AddChatMessage_RPC(string m) {
while(chatMessages.Count >= maxChatMessages) {
chatMessages.RemoveAt(0);
}
chatMessages.Add(m);
}
void Connect() {
PhotonNetwork.ConnectUsingSettings( "Alpha 0.2" );
}
void OnGUI() {
GUILayout.Label( PhotonNetwork.connectionStateDetailed.ToString() );
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 (PhotonNetwork.connected == false && connecting == false ) {
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.BeginHorizontal ();
GUILayout.FlexibleSpace ();
foreach(string msg in chatMessages){
GUILayout.Label(msg);
}
GUILayout.EndVertical ();
GUILayout.EndArea();
}
}
void OnJoinedLobby() {
Debug.Log ("OnJoinedLobby");
PhotonNetwork.JoinRandomRoom();
}
void OnPhotonRandomJoinFailed() {
Debug.Log ("OnPhotonRandomJoinFailed");
PhotonNetwork.CreateRoom( null );
}
void OnJoinedRoom() {
Debug.Log ("OnJoinedRoom");
connecting = false;
SpawnMyPlayer();
}
void SpawnMyPlayer() {
AddChatMessage ("Spawning player: " + PhotonNetwork.player.name);
if(spawnSpots == null) {
Debug.LogError ("WTF?!?!?");
return;
}
SpawnSpot mySpawnSpot = spawnSpots[ Random.Range (0, spawnSpots.Length) ];
GameObject myPlayerGO = (GameObject)PhotonNetwork.Instantiate("Player", 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("Crosshair")).enabled = true;
((MonoBehaviour)myPlayerGO.GetComponent("Pause1")).enabled = true;
((MonoBehaviour)myPlayerGO.GetComponent("PlayerMovement")).enabled = true;
myPlayerGO.transform.FindChild("Main Camera").gameObject.SetActive(true);
}
}
I do not really know what you mean, could you comment which line, also use the inherited Photon.$$anonymous$$onoBehavior, It removes the need for GetComponent().dosomething, ins$$anonymous$$d its photonView.dosomething.
You are not using as said above, the Photon.$$anonymous$$onoBehavior class-inherit. Also, on line 30, where you try to GetComponent the PhotonView, make sure that it's actually attached to the your GameObject.
Your answer

Follow this Question
Related Questions
Receive value from UDP connection 0 Answers
Vuforia multiplayer marker 0 Answers
How To Destroy An Object Server Side When Using OnTriggerEnter 1 Answer
Building AR app mobile multiplayer 0 Answers
How to create a searchable list of ScriptableObjects? 2 Answers