Страница 1 из 1

Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 17 авг 2016, 23:01
Andrean4ik
В скрипте для эдитора есть список объектов, по которому надо пройтись и удалить все объекты. Destroy() не подходит, юнити требует применять DestroyImmediate(), но вот беда он в цикле не работает... так как же можно удалить все объекты из списка?

Re: Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 17 авг 2016, 23:12
samana
Andrean4ik писал(а):юнити требует применять DestroyImmediate(), но вот беда он в цикле не работает

Не может быть, покажите-ка код.

Re: Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 17 авг 2016, 23:17
Andrean4ik
Решил проблему так, инстанцирую жертвенный объект, помещаю объекты подлежащие удалению в него, и удаляю при помощи destroyImmediate();
Работает, но костыль. Как это по нормальному можно сделать?

Re: Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 17 авг 2016, 23:20
Andrean4ik
samana писал(а):
Andrean4ik писал(а):юнити требует применять DestroyImmediate(), но вот беда он в цикле не работает

Не может быть, покажите-ка код.


Синтаксис:
Используется csharp
        if (GUILayout.Button("Clear"))
        {
            for (int i = 0; i < spotsList.Count; i++)
            {
                DestroyImmediate(spotsList[i]);
            }
        }
 


В итоге удаляется только первый объект.

Re: Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 17 авг 2016, 23:33
samana
Очень странно, проверил у себя, всё работает нормально.

Re: Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 17 авг 2016, 23:42
Andrean4ik
samana писал(а):Очень странно, проверил у себя, всё работает нормально.


Забавно, впрочем костыль уверенно работает так что время тратить не буду. Спасибо за содействие =)

Re: Как удалить все объекты из списка, в скрипте для Editor

СообщениеДобавлено: 26 авг 2016, 02:45
llka
Andrean4ik писал(а):
samana писал(а):
Andrean4ik писал(а):юнити требует применять DestroyImmediate(), но вот беда он в цикле не работает

Не может быть, покажите-ка код.


Синтаксис:
Используется csharp
        if (GUILayout.Button("Clear"))
        {
            for (int i = 0; i < spotsList.Count; i++)
            {
                DestroyImmediate(spotsList[i]);
            }
        }
 


В итоге удаляется только первый объект.

попробуйте после удаления делать Repaint самой сцены