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.

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.