在Unity中,通过编辑器删除另一个组件时如何通过脚本删除一个组件?

内森·雷纳尔

上下文:我正在编辑一个预制件,上面有两个组件,都是自定义脚本。

在编辑预制件时,我想在通过右键单击它并单击“删除组件”来删除编辑器中的组件容器描述符的同时删除组件容器同步。见下图。

我想删除的组件

在 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 既不能DestroyDestroyImmediate不能在预制件内部使用(请参阅此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过在React中单击另一个组件来删除组件?

在 react 中输入另一个组件时,如何从组件中删除 className

如何通过 ReactJS 中的函数将数据从一个组件传递到另一个组件?

如何通过另一个组件中的操作将类名切换到一个组件?

在包装另一个指令的可重用组件Angular指令中,如何使模型“通过”?

通过React中的父组件在另一个组件中触发动作

如何通过 props 将组件传递给另一个组件

通过调用函数从另一个组件更改组件中的值

如何通过按钮将数据从一个组件解析到另一个组件

如何删除仅通过鼠标单击创建的对象?(创建另一个时)

双击另一个时如何通过ID号删除元素?

如何通过在React中的兄弟组件上单击事件将图像加载到另一个组件中

HOWTO-通过编辑器外部的另一个按钮来触发ckeditor中的源按钮

如何通过另一个DF中的计数删除一个DF中的行?

如何通过在 react.js 中从该组件设置道具来重定向到另一个组件

如何通过单击按钮将另一个Razor组件加载到Razor组件中?

如何通过与另一个数组比较从一个数组中删除公共元素

在反应中,如何通过单击另一个组件中的图标来使模态显示在一个组件中?

如何使用导航组件从一个活动导航到另一个活动并从堆栈中删除第一个活动?

在ReactJS中,如何在另一个组件中渲染一个组件?

在反应中如何调用另一个组件中的一个组件?

如何通过另一个组件在更新属性后触发一个组件在Angular 2中呈现?ngZone.run()无法正常工作

如何在React中让一个组件“位于另一个组件之下”?

如何从vue.js中的另一个组件更新一个组件

如何在React中从另一个组件设置一个组件的状态

如何在离子中的另一个组件中使用一个组件?

如何在 React 中从另一个组件重新渲染一个组件?

单击另一个组件中的按钮时,如何显示/隐藏React组件?

复制结构的组件会删除同一结构的另一个组件