Key input changing Label (Object reference not set) error

Hey Guys, I’m in the process of making a simple building game at the moment and I’d like to have the basics of it down so at the moment instead of building I’m just creating labels and changing their text on the screen. I have a script that calls the empty label component then when the H key is pressed it should fill that label with a message varying between the if else section. The if else calls its variables from another class I have where they are kept static at the moment.

When executing the program it will run but on pressing the “H” key I get the error

"NullReferenceException: Object reference not set to an instance of an object
UnityEngine.GUI.Label (Rect position, System.String text)
SHOWMESSAGE.OnGUI () (at Assets/GameGrass/SHOWMESSAGE.cs:16)
SHOWMESSAGE.Start () (at Assets/GameGrass/SHOWMESSAGE.cs:9)
"

and nothing in the game changes.

public class SHOWMESSAGE : MonoBehaviour {

// Use this for initialization
void Start () {

	
}

static void OnGUI() {
	
	string message = "";
	
    GUI.Label(new Rect(50, 50, 100, 20), "" + message + "");
	
	if (Input.GetKeyDown("h"))
	{
		if(variablesResources.GetWood() >= 3)
		{
			message = "YOU BUILT A HOUSE";
			variablesResources.SetWood(-3);
		}
	else
		{
			message = "YOU DONT HAVE ENOUGH WOOD";
		}
	}

}
}

i’m not sure if this one changes anything but I’ll post it anyway

public class variablesResources : MonoBehaviour {

static int woodResource;

static public int GetWood()
{
	return woodResource;
}

   static public void SetWood(int increment) 
{
woodResource += increment;
}

}

I’m relatively new to C# so any feedback is helpful :slight_smile: thanks

A few issues:

private string message = "";

void Update()
{
 if (Input.GetKeyDown("h")) // You must use 'Input' only at the 'Update' functions
 {
    if(variablesResources.GetWood() >= 3)
    {
      message = "YOU BUILT A HOUSE";
      variablesResources.SetWood(-3);
    }
    else
    {
         message = "YOU DONT HAVE ENOUGH WOOD";
    }
  }
}
void OnGUI() // Is not static and you should not be making it so
{
    GUI.Label(new Rect(50, 50, 100, 20), message);
}