Photon Unity Networking Chat System Problems...

I am trying to make a chat/message system for my game. The player can enter a chat message and press enter to send the message. The message is sent to everyone, but it will not display properly in the chat gui. Here is Chat.cs:

using UnityEngine;
using System.Collections.Generic;

public class Chat : Photon.MonoBehaviour {
	List<string> chatMessages;

	int MaxChatMessages = 5;

    string input = "";
    public GUISkin skin;
    public static bool ShowChatInput = false;

	public Vector2 scrollpos = Vector2.zero;

	void OnPhotonPlayerDisconnected (PhotonPlayer player) {
        if (PhotonNetwork.isMasterClient) {
		    AddChatMessage ("<color=aqua>" + player.name + "</color>" + " left the game.");
        }
	}
	
	void OnPhotonPlayerConnected (PhotonPlayer player) {
        if (PhotonNetwork.isMasterClient) {
		    AddChatMessage ("<color=aqua>" + player.name + "</color>" + " joined the game.");
        }
	}

	public void AddChatMessage (string m) {
		gameObject.GetComponent<PhotonView> ().RPC ("AddChatMessageRPC", PhotonTargets.All, m);
	}

	[PunRPC]
	void AddChatMessageRPC (string m) {
		chatMessages.Add (m);

		while (chatMessages.Count >= MaxChatMessages) {
			chatMessages.RemoveAt(0);
		}
	}

	void OnGUI () {
        GUI.skin = skin;
        GUI.skin.settings.cursorColor = Color.black;

        Event e = Event.current;
        if (e != null)
        {
            if (e.type == EventType.KeyDown)
            {
                if (e.keyCode == KeyCode.Return)
                {
					input = "<color=aqua>" + PhotonNetwork.playerName + ": </color>" + input;
                    AddChatMessage(input);
                    input = "";
               }
            }
        }

        GUILayout.BeginArea (new Rect(5, 5, Screen.width, Screen.height - 10));
		GUILayout.BeginVertical ();
		GUILayout.FlexibleSpace ();
			
		foreach (string msg in chatMessages) {
			GUILayout.Label (msg);
		}

        if (ShowChatInput) {
            input = GUILayout.TextField(input, GUILayout.MaxWidth(350));
        }

		GUILayout.EndVertical ();
		GUILayout.EndArea ();
	}

	void Awake() {
		chatMessages = new List<string>();
	}

	void Update () {
		if (Input.GetKeyDown (KeyCode.Y)) {
			if (ShowChatInput == true && photonView.isMine && NetworkManager.UIHidden == false) {
				ShowChatInput = false;
				Cursor.visible = false;
				Cursor.lockState = CursorLockMode.Locked;
				return;
			}

			if (ShowChatInput == false && photonView.isMine && NetworkManager.UIHidden == false) {
				ShowChatInput = true;
				Cursor.visible = true;
				Cursor.lockState = CursorLockMode.None;
				return;
			}
		}
	}
}

I am also getting this error when I press enter:

ArgumentException: Getting control 2's position in a group with only 2 controls when doing KeyDown
Aborting

The number changes (2) based on how mant times i press enter to send a chat message. Please help me fix these errors, and thank you in advance :slight_smile:

There is a working mini-sample for chat via RPCs in the PUN package.

Check out the “Worker Demo”. In the in-game scene, there’s chat.