- Home /
Player object is being destroyed after OnClick() event
Hi i'm a noob to unity and will be doing something wrong i just can't figure out what it is...
Basically i have i method that gets fired every time an object is hit to decrease the players lives by 1. When the players lives hits 0 i'm calling SetActive(false) on the player object and displaying a panel with a continue button on it. When you click the button the players lives is reset back to 3 and the panel is hidden and the player is set to active again.
However at the end of it all the the player object is being destroyed and removed from the hierarchy all together and i don't know why as i'm not calling Destroy() anywhere in the whole project?
I basically want the player lives to be reset to 3, the player object to be active and appear again and the panel to disappear. Please can somebody offer some guidance on how to achieve this. Thanks.
public Player player;
public GameObject continuePanel;
public void RemoveLive()
{
player.playerLives -= 1;
LivesRemainingText.text = "Lives: " + player.playerLives.ToString();
if(player.playerLives == 0)
{
//show continue panel
player.gameObject.SetActive(false);
continuePanel.gameObject.SetActive(true);
}
}
public void ResetLives()
{
player.playerLives = 3;
LivesRemainingText.text = "Lives: " + player.playerLives.ToString();
player.gameObject.SetActive(true);
continuePanel.gameObject.SetActive(false);
}
}
Answer by DapperDirewolf · Oct 02, 2018 at 04:54 PM
My best guess before I run out the door is that instead of referencing the Player component of a GameObject like you have done:
public Player player;
Perhaps you should be using the GameObject instead:
public GameObject player;
... and then updating the score with
player.GetComponent<Player>().playerLives
... and disabling/enabling the GameObject with:
player.SetActive(false)
player.SetActive(true)
My reasoning is that when you call the SetActive function on the GameObject in your current code, you are referring to a disabled GameObject without using a direct reference to it - and attempting to access it through one of it's Components.
I could be horribly wrong here, but I've been doing some similar stuff with SetActive() recently and it's the first thing that came to my mind.
Good luck!
Your answer

Follow this Question
Related Questions
how to make it that longer the key is pressed the faster the object rotates? 1 Answer
MonoDevelop Error [NameSpace name UnityEngine could not be found] 0 Answers
How to store a gameobject in a variable 1 Answer
How to add NuGet package into my MonoDevelop project? 0 Answers
Maintain local transform.rotation.y when updating transform.up? 2 Answers