【发布时间】:2018-08-27 15:45:01
【问题描述】:
我想做什么
我试图让一个对象具有序列化的int,它将产生我指定的对象数量。当我将数字更改为较小的数字时,它显然应该删除并销毁以前创建的数字。
这会导致一个问题,但是,请按照 Update 与 ExecuteInEditMode 的工作方式进行操作,因为它会在场景发生变化时执行,这使得这变得更加困难。
我尝试过的
[ExecuteInEditMode]
public class Floor : MonoBehaviour
{
[SerializeField] GameObject gameObject;
[SerializeField] bool destroy;
private void Update()
{
if (destroy)
{
destroy = !destroy;
gameObject.Destroy();
}
}
}
虚幻引擎大量使用了这种模式,有一个可见的bool,它会自行关闭并表现得更像编辑器中的一个按钮,这很方便。这将允许我按下destroy 并销毁该对象。显然,如果没有检查,它会破坏gameObject,然后再次调用Update,它会再次破坏它,依此类推。
我想通过添加这个布尔检查,当再次调用 Update 时,它不会做任何事情,所以循环会停止,但是不,它会继续并让我进入一个无限循环。
我也尝试过使用 Corroutine,但这并没有解决任何问题。
有什么方法可以在不导致无限循环的情况下删除ExecuteInEditMode 中的对象?也许有比Update 更好的方法,它不会在任何东西 时更新> 在场景变化?
【问题讨论】:
标签: c# unity3d stack-overflow infinite-loop