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);
		
	}
	
}

You declare a variable, but you never create the actual list. Try changing line 13 to:

List<string> chatMessages = new List<string>();