C# 如何在ExecuteInEdit模式下删除Unity中的对象 我想做什么
我正试图创建一个具有序列化的C# 如何在ExecuteInEdit模式下删除Unity中的对象 我想做什么,c#,unity3d,stack-overflow,infinite-loop,C#,Unity3d,Stack Overflow,Infinite Loop,我正试图创建一个具有序列化的int的对象,该对象将生成我指定的对象数。当我将数字更改为较低的数字时,它显然应该删除并销毁以前创建的数字 但是,这会导致Update使用ExecuteInEditMode的方式出现问题,因为每当场景发生更改时,它都会被执行,这使得操作更加困难 我试过的 虚幻引擎经常使用这种模式,它有一个可见的bool,它会自动关闭,并且更像编辑器中的一个按钮,这很方便。这将允许我按销毁并销毁对象。显然,如果没有检查,它将销毁游戏对象,并且再次调用更新,它将再次销毁它,依此类推 我想
int
的对象,该对象将生成我指定的对象数。当我将数字更改为较低的数字时,它显然应该删除并销毁以前创建的数字
但是,这会导致Update
使用ExecuteInEditMode
的方式出现问题,因为每当场景发生更改时,它都会被执行,这使得操作更加困难
我试过的
虚幻引擎经常使用这种模式,它有一个可见的bool
,它会自动关闭,并且更像编辑器中的一个按钮,这很方便。这将允许我按销毁
并销毁对象。显然,如果没有检查,它将销毁游戏对象
,并且再次调用更新
,它将再次销毁它,依此类推
我想通过添加这个布尔检查,当再次调用Update
时,它不会做任何事情,因此循环会停止,但不会,它会继续并得到一个无限循环
我也试过用腐蚀剂,但没能解决任何问题
有没有办法在ExecuteInEditMode
中删除一个对象而不引起无限循环?也许有比Update
更好的方法,在场景发生任何变化时不更新?试试看
游戏对象。立即销毁(游戏对象)
在编辑模式下:在编辑模式下使用Destroy immediate()
,因为Destroy()
被延迟(延迟解构在编辑模式下永远不会执行)
统一文件:
[ExecuteInEditMode]
public class Floor : MonoBehaviour
{
[SerializeField] GameObject gameObject;
[SerializeField] bool destroy;
private void Update()
{
if (destroy)
{
destroy = !destroy;
gameObject.Destroy();
}
}
}