Как отслеживать каждый созданный объект по отдельности?

По клику на кнопку создаётся куб, и его нужно через 2 секунды удалить. И так с каждым кубом по отдельности, но как отследить отдельный куб я не знаю.

public GameObject cubePrefab; //Ссылка на префаб куба


public void OnClick()
{
   Instantiate(cubePrefab);
   //Здесь должен быть код, отслеживающий каждый созданный куб по отдельности
   Invoke("Delete", 2f)
}

void Delete() //Не работает так как нету части кода в котором отслеживается каждый куб по отдельности
{
   Destroy();
}

Ответы (2 шт):

Автор решения: Максим Фисман

Создать скрипт куба. Вешать на куб при спавне, а еще лучше создать префаб куба с уже навешенными скриптом:

public class Cube {
    private float LifeTime = 2;
    public void Update () {
        LifeTime -= Time.deltaTime;
        if (LifeTime <= 0) 
            Destroy(gameObject);
    }
}

Или:

public class Cube {
    private float LifeTime;
    public void Start () {
        StartCoroutine(Life());
    }
    private IEnumerator Life () {
        yield return new WaitForSeconds(LifeTime);
        Destroy(gameObject);
    }
}
→ Ссылка
Автор решения: Lexanom

просто сохраняй ссылку на созданный объект, например так

public GameObject cubePrefab;
private GameObject cube;

public void OnClick()
{
   cube = Instantiate(cubePrefab);
   Invoke("Delete", 2f);
}

void Delete()
{
   Destroy(cube);
}
→ Ссылка