- Home /
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.
Answer by KellyThomas · Jan 27, 2014 at 03:59 PM
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.
Thank you for your succinct response. It turns out, specifically, that because I was using getters and setters on scoreObject.Winscore without setting its inner value (_winScore) with a default to be overwritten, it loaded the inherent default of an int (0), checked, was like "PLAYER ONE WINS AND SO DOES PLAYER TWO" and ran the function before it loaded the reference to the script.
Hot damn.
But, your code showed me that GetComponent gives you a bool response. For that, you get best answer.
Your answer
Follow this Question
Related Questions
Object Reference Not Set to an Instance of an object 0 Answers
NullReferenceException: Object reference not set to an instance of an object 0 Answers
Object reference not set... but... it is? 0 Answers
i don't understand "NullReferenceException: Object reference not set to an instance of an objec" 0 Answers
"Object reference not set to an instance of an object" 2 Answers