Instance of an Object not Found

Hi. Pretty straightforward, so not quite sure what I’m missing here.

public class LoadWin : MonoBehaviour 
{
	Scorekeeper scoreObject;
	bool Player1Win = true;
	float elapsedTime = 0.0f;

	void Start()
	{
		scoreObject = GameObject.Find("ScorekeeperText").GetComponent<Scorekeeper>();
	}

	void Update()
	{
		elapsedTime += Time.deltaTime;
	}

	void LoadWinScreen()
	{
		if (scoreObject.PlayerOneScore >= scoreObject.WinScore)
		{
			Player1Win = true;
			WinConditionsave.Winner(Player1Win, elapsedTime);
		}
		if (scoreObject.PlayerTwoScore >= scoreObject.WinScore)
		{
			Player1Win = false;
			WinConditionsave.Winner (Player1Win, elapsedTime);
		}
		Application.LoadLevel("WinScreen");
	}
}

The code that spits out the “instance of an object not found” is this one:

if (scoreObject.PlayerOneScore >= scoreObject.WinScore)

Any ideas? The game object name was spelled right and exists, as does the script on it.

It seems pretty clear cut it looks like scoreObject holds a null value.

We can add this code just before to the line triggering the error to confirm:

if (!scoreObject) {
    Debug.Log("scoreObject is null");
}

Assuming this message prints then we should check that GetComponent() returns a valid object.

We can add this code to the Start() method:

if(!GameObject.Find("ScorekeeperText").GetComponent<Scorekeeper>()) {
    Debug.Log("GetComponent<Scorekeeper>() returned null";
}
else {
    Debug.Log("GetComponent<Scorekeeper>() returned a valid object";
}

If that code prints the “valid object” message then this means that your ScorekeeperText gameObject and/or it’s Scorekeeper component are being destroyed between when Start() and LoadWinScreen() are run.