Sindre Berge
Sindre Berge

Reputation: 131

Is there a way to check if a GameObject has been destroyed?

I'm creating a game and i want to show a panel when the player is dead

I've tried different approaches but none seems to do what I want

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DeadOrAlive : MonoBehaviour
{

    public GameObject Player;
    public GameObject deadPanel;

    void Update()
    {
        if (!GameObject.FindWithTag("Player"))
        {
            deadPanel.SetActive(true);
        }
    }


}

Upvotes: 0

Views: 12573

Answers (2)

Vincent Bree
Vincent Bree

Reputation: 435

To check if a object has been destroyed, you should use MonoBehavior's OnDestroy like so:

// Attach this script to the player object
public class DeadOrAlive : MonoBehaviour
{
    public GameObject deadPanel;

    void OnDestroy()
    {
        deadPanel.SetActive(true);
    }
}

You can also instead of destroying the player object, set it to active/inactive, but to check if the player is dead or alive this way, you will need a separate object which checks the active state:

//Attach this to a object which isn't a child of the player, maybe a dummy object called "PlayerMonitor" which is always active
public class DeadOrAlive : MonoBehaviour
{
    public GameObject deadPanel;

    void Update()
    {
        if (!GameObject.FindWithTag("Player"))
        {
            deadPanel.SetActive(true);
        }
    }
}

Haven't used unity in a while and forgot how weird it could get.

Upvotes: 6

Sindre Berge
Sindre Berge

Reputation: 131

Thanks to @VincentBree this is how I did it

  void Update()
{
    if (!Player.activeSelf)
    {
        deadPanel.SetActive(true);
    }
}

Upvotes: 0

Related Questions