Что я пытаюсь сделать
Я пытаюсь получить один объект с сериализованным int
, который будет порождать количество указанных объектов. Когда я изменяю число на меньшее, оно, очевидно, должно удалять и уничтожать созданные ранее.
Однако это вызывает проблему из-за того, что Update
работает с ExecuteInEditMode
в том смысле, что он выполняется всякий раз, когда изменяется сцена, что делает это намного сложнее.
Что я пробовал
[ExecuteInEditMode]
public class Floor : MonoBehaviour
{
[SerializeField] GameObject gameObject;
[SerializeField] bool destroy;
private void Update()
{
if (destroy)
{
destroy = !destroy;
gameObject.Destroy();
}
}
}
Unreal Engine часто использовал этот шаблон, имея видимый bool
, который отключается и ведет себя больше как кнопка в редакторе, что очень удобно. Это позволило бы мне нажать destroy
и уничтожить объект. Очевидно, что без проверки он уничтожит gameObject
, и снова будет вызван Update
, он уничтожит его снова и так далее.
Я подумал, добавив эту логическую проверку, когда Update
был вызван снова, он ничего не сделал бы, поэтому цикл остановился бы, но нет, он продолжается и дает мне бесконечный цикл.
Я также пытался использовать Corroutine, но это ничего не исправило.
Есть ли способ удалить объект в ExecuteInEditMode
, не вызывая бесконечный цикл? Может быть, есть лучший метод, чем Update
, который не обновляется, когда что-либо в сцена меняется?