Despite everything written in this thread, I still have no solution to my problem, but I know what I want to do at least. I am trying to programmatically change the Text Input value of a TextMeshProUGUI game object. My only problem now is that I do not know how to reach the TMP_InputField of the game object in my script. I should add that I am attempting to change the input field inside a OnCollisionEnter2D event listener - When I [SerializeField] TMP_Inputfield in my script, the editor will not allow me to drag a game object of type TextMeshProUGUI onto it. Makes sense. Can I drag a TMP_InputField from anywhere? - When I [SerializeField] TextMeshProUGUI in my script, I can drag the game object onto it, but using .GetComponent<TMP_InputField> just results in an empty object reference. What am I doing wrong? How do I solve this?