【发布时间】:2022-01-19 16:41:01
【问题描述】:
假设我们有一个带有 Transform 属性的 MonoBehaviour 类:
public class Class : MonoBehaviour
{
public Transform Target; //An object is already referenced here.
}
问题很简单:如果该对象被(外部)删除,有没有办法获取事件或某种回调?
Unity 会将其显示为“缺失”:
因为它只是一个转换,所以你不能在这里真正使用OnDestroy(),即使你可以,这也不是一个好的选择,因为有多少转换实例。
【问题讨论】:
-
也许 OnValidate 当“检查器中的值发生变化”时?然后使用
tryGetComponent? -
OnValidate()仅在编辑器中有效,因此不是一个选项。tryGetComponent可以工作,但它会强制脚本检查每一帧以确保它。会的,我只是认为可能有更好的解决方案。 -
那么,制作转换
private并创建公共 get/set 函数 - 这样您就可以在 set 函数中实现所需的逻辑。 -
我试过了,问题是每当对象通过
Destroy(gameobject)方法被销毁时,变换也被删除,但由于没有人设置target = null,所以“set”函数内部没有任何内容。
标签: c# unity3d unity-editor