Cannot get a variable on a other script
Hey all,
I am 14 years old. Sorry for my English because I speak French. I start with Unity 3D. I make a idle game. I searched on forum but nothing worked.
My code:
Click.cs
using UnityEngine;
using System.Collections;
public class Click : MonoBehaviour {
public UnityEngine.UI.Text goldDisplay;
public int gold = 0;
public int goldperclick = 1;
void Update(){
goldDisplay.text = "" + gold;
}
public void Clicked() {
gold += goldperclick;
}
}
Upgrade.cs
using UnityEngine;
using System.Collections;
public class Upgrade : MonoBehaviour {
private Click clicks;
void Awake(){
clicks = GetComponent<Click>();
}
public void UpgradeGPC() {
if (clicks.gold >= 25) {
clicks.gold -= 25;
clicks.goldperclick += 1;
}
}
}
When I click on upgrade button, a error appears.
NullReferenceException: Object reference not set to an instance of an object Upgrade.UpgradeGPC () (at Assets/Scripts/Upgrade.cs:19) UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:149) UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:626) UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:766) UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:54) 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()
Thank you for your reply.
Answer by dkjunior · Oct 12, 2015 at 05:33 PM
The only reason I see for that to happen is if clicks variable is null. This will happen if the Click script is not attached to the game object that Upgrade script is attached to. So basically for your code to work, both Click and Upgrade script must be attached to the same game object.
Your answer
![](https://koobas.hobune.stream/wayback/20220612041028im_/https://answers.unity.com/themes/thub/images/avi.jpg)