PunRPC getting lost for seemingly no reason.

Options

Hi there!


Repost because about only a few people even saw my first one. I am trying to implement a global chat system. The code is quite self-explanatory, but the main idea is just that every time a client enters some text and hits enter, that new text is sent to all the clients, which then add the new text to the previous text.

After countless documentation readings, forum scrawlings, and head bangings, I have no idea why it doesn't work. I am here to answer and assist as much as I can. Likely, it's something incredibly obvious that I missed.


Help?

using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;


public class GlobalChatScript : MonoBehaviour
{
    [SerializeField] private InputField InputText;
    [SerializeField] private GameObject GlobalChatText;
    [SerializeField] private GameObject PauseMenu;
    [SerializeField] private GameObject NameMenu;
    [SerializeField] private PlayerMovement3 PlayerMover;


    private bool inputMenuActive = false;


    [SerializeField] private int maxTextLength;


    void Update()
    {
        if (Input.GetKeyDown(KeyCode.T) && !inputMenuActive && !PauseMenu.activeInHierarchy && !NameMenu.activeInHierarchy)
        {
            //Open chat input, lock player movement, free cursor, select chat input
            inputMenuActive = true;
            InputText.gameObject.SetActive(true);
            PlayerMover.freeMovement = false;
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;
            InputText.Select();
        }


        if (inputMenuActive && this.GetComponent<PhotonView>().IsMine && Input.GetKeyDown(KeyCode.Return))
        {
            //Immediately close this conditional, update the chat
            inputMenuActive = false;
            UpdateMyChat();
        }
    }


    public void UpdateMyChat()
    {
        //Grab new text, wipe text
        string setText = this.GetComponent<PhotonView>().Owner.NickName + ": " + InputText.text;
        InputText.text = "";


        //Close chat input, resume player movement, lock mouse
        InputText.gameObject.SetActive(false);
        PlayerMover.freeMovement = true;
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    
        Debug.Log(this.GetComponent<PhotonView>().ViewID + " | SentMessage | " + setText);


        //Send PunRPC
        this.GetComponent<PhotonView>().RPC("SetGlobalChatText", RpcTarget.All, setText);
    }


    [PunRPC]
    public void SetGlobalChatText(string textSet)
    {
        //Put new text in front
        string set = textSet + "\n" + this.GlobalChatText.GetComponent<Text>().text;
        //Limit string size
        if (set.Length > maxTextLength)
            set = set.Substring(0, maxTextLength);


        //Update my chat
        Debug.Log(this.GetComponent<PhotonView>().ViewID + " | RecievedMessage | " + textSet);
        this.GlobalChatText.GetComponent<Text>().text = set;
    }
}