上下文:我正在编辑一个预制件,上面有两个组件,都是自定义脚本。
在编辑预制件时,我想在通过右键单击它并单击“删除组件”来删除编辑器中的组件容器描述符的同时删除组件容器同步。见下图。
在 ContainerDescriptor 中,我参考了 ContainerSync 脚本。
public class ContainerDescriptor : MonoBehaviour
{
public ContainerSync containerSync;
}
我尝试使用 ContainerDescriptor 脚本的 OnDestroy() 方法,但在以这种方式删除 ContainerDescriptor 时不会调用它。
在这个线程上,至少有一个解决方案,如果您像您一样通过上下文菜单删除该组件。
使用[ExecuteAlways]
通常只在 PlayMode 中调用的事件消息调用也会在 Edit 和 Prefab 模式中调用!
你可以做类似的事情
[ExecuteAlways]
public class ContainerDescriptor : MonoBehaviour
{
public ContainerSync containerSync;
#if UNITY_EDITOR
private void OnDestroy ()
{
if(containerSync)
{
if(Application.isPlaying)
Destroy(containerSync);
else
DestroyImmediate (containerSync);
}
}
#endif
}
请注意,尽管专门针对预制件,这可能仍然会失败,因为 afaik 既不能Destroy
也DestroyImmediate
不能在预制件内部使用(请参阅此处)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句