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 thanks