(Unity) Возможно ли вызвать событие/метод когда объект, на который есть ссылка в MonoBehaviour становится удалённым/утерянным?

Допустим, у нас есть вот такой класс:

public class Class : MonoBehaviour
{
    public Transform Target; //Сюда уже присвоен какой-то "Transform".
}

Вопрос прост:

Возможно ли как-либо отследить и получить callback если объект "Target" будет удалён (извне)?

Когда это происходит, в редакторе Unity обычно пишет "Missing": 1

Так как это Transform, здесь не прокатит использование OnDestroy(), и даже если это бы сработало, то имело бы проблемы с оптимизацией, учитывая сколько таких Transform-ов на сцене.

Сразу уточню: я ищу решение, которое будет работать в билде игры - варианты, работающие только в редакторе к сожалению мне не подходят.


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

Автор решения: Yaroslav
public class Foo: MonoBehaviour
{
    public event Action Destroyed;
    
    private void OnDestroy () 
    {
        Destroyed?.Invoke();
    }
}

public class FooHandler: MonoBehaviour
{
    [SerializeField] private Foo _target;

    private void Start ()
    {
        _target.Destroyed += OnTargetDestroy;
    }

    private void OnTargetDestroy ()
    {
        
    }
}

Но ситуация какая-то странная. У вас проблемы с проектированием.

→ Ссылка