- Home /
Function parameter cant be referenced
I have made a function and am calling it from a UI button. The function is supposed to change a string based on the string parameter, that is passed through that function.
Heres the code and heres what the button is set to do BUTTON. the button works as the console print clicked. I shouldnt need this but the errors are at the bottom.
using UnityEngine;
using System.Collections;
public class CharacterSelect : MonoBehaviour {
public PlayerController PlayController;
// Use this for initialization
void Start () {
PlayController = GetComponent("PlayerController")as PlayerController;
}
// Update is called once per frame
void Update () {
}
public void ChangeCharacter(string name)
{
print("CLICKED");
PlayController.charName = name;
Application.LoadLevel("Demo_LVL");
}
}
NullReferenceException: Object reference not set to an instance of an object
CharacterSelect.ChangeCharacter (System.String name) (at Assets/CharacterSelect.cs:20) UnityEngine.Events.InvokableCall`1[System.String].Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:141) UnityEngine.Events.CachedInvokableCall`1[System.String].Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:259) UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:575) UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:717) UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:53) UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:35) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:44) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:52) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269) UnityEngine.EventSystems.EventSystem:Update()
Do you have CharacterSelect and PlayerController assigned to the same GameObject? You have a Null Reference at line 20.
No i was under the impression that get component could be done across scenes.
No... GetComponent accesses other scripts attached to this object. Not on other objects (that's what GameObject.Find does), and certainly not across scenes (which can't be done, by definition: objects in other scenes haven't been instantiated so can't be accessed).
Answer by Tokw · Aug 03, 2015 at 05:41 PM
Ahh of course my bad, my solution was to use DontDestroyOnLoad and access PlayerController from the player gameobject in another scene.