Simple Game Over script
Heya, I am making a 2D simple vertical shooter in unity.. I am new to this and struggling I guess with a basic concept - displaying the game over text.
All I am trying to do is have my UI Text "Game Over" appear on collision with an enemy to the player.
I currently have this in place, there are no errors, however nothing happens when you play the game and get hit by an enemy. Not sure what I need to be adding, removing or changing?
Any help is much appreciated. Thank you so much
void OnTriggerEnter(Collider other){
if(other.gameObject.tag=="Enemy"){
GameOver();
}
} void GameOver(){ gameOverText.text = "Game over, your score is" + GameObject.FindGameObjectWithTag("PlayerController").GetComponent().Count; }
Answer by Placus_Brutus · Mar 02, 2016 at 03:21 AM
Assuming that you are hiding the text at the beginning (either unchecking the little box in the editor or through code), you'll also want to unhide it:
gameOverText.GetComponent<Text>().enabled = true;
Side Note: Your GetComponent doesn't look like it's set to find an actual component. If you are trying to reference a script attached to the PlayerController, try:
GameObject.FindGameObjectWithTag("PlayerController").GetComponent<scriptNameGoesHere>().scoreVariableNameHere;
Answer by vaders_girl · Mar 02, 2016 at 04:25 AM
@placusbrutus
Thank you for that code. I have added it into now where my enemy collides with the player. This is resolving all of my errors (Thank God!) however now when I play the game errors will come up giving me a Null Reference Exception, saying that Object reference is not set to instance of an object.. but with my code here it is?
void OnTriggerEnter2D (Collider2D other) { if (other.gameObject.tag ==( "Player")) gameObject.SetActive (false); gameOverText.GetComponent().enabled = true;
Sorry to pester! Just trying to get my head around all of this. Thank you so much for your help.
"Object reference is not set to instance of an object" means that one of the gameObjects in your code is, more than likely, null; not pointing/connected to an object in your scene. If the error is on the "gameOverText.GetComponent" line, then your gameOverText is not connected to the Text object in your scene.
Put the following line above your "gameOverText.GetComponent", if it says null, then that is your problem. Debug.Log("gameOverText: " + gameOverText);
You'll also need to add to your getComponent to avoid future errors. gameOverText.GetComponent().enabled = true;
Hope this helps.
Your answer
Follow this Question
Related Questions
UI Text Editing Problem, What's Wrong? Need Anybody to Assist 1 Answer
Showing player health on UI 1 Answer
Text in UI disappears when clicked on 0 Answers
GUI/Text Asset for Unity? 0 Answers
Why is this List only showing one int? 0 Answers