(Unity) Возможно ли вызвать событие/метод когда объект, на который есть ссылка в MonoBehaviour становится удалённым/утерянным?
Допустим, у нас есть вот такой класс:
public class Class : MonoBehaviour
{
public Transform Target; //Сюда уже присвоен какой-то "Transform".
}
Вопрос прост:
Возможно ли как-либо отследить и получить callback если объект "Target" будет удалён (извне)?
Когда это происходит, в редакторе Unity обычно пишет "Missing":

Так как это 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 ()
{
}
}
Но ситуация какая-то странная. У вас проблемы с проектированием.