Суббота, 20 Апреля 2024, 18:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » как удалить лист элемент по индексу, тип GameObject
как удалить лист элемент по индексу, тип GameObject
88mml72Дата: Четверг, 05 Февраля 2015, 20:19 | Сообщение # 1
частый гость
Сейчас нет на сайте
код:

Код
if (Input.GetMouseButton(0))
                 {
                 int count = 0;
                 int pos = 0;
                     if (hit.collider.gameObject.name.Contains(" GREENHIGH1 "))
                     {
                         foreach (GameObject GOBJ in HEXListOBJ)
                         {
                             count++;
                             if (hit.collider.gameObject.transform.position.x == GOBJ.transform.position.x && hit.collider.gameObject.transform.position.z == GOBJ.transform.position.z)
                             {
                    pos = count;
                    GOBJ.active = false; //так можно но элемент остается
                    HEXListHIGH.RemoveAt(pos - 1);// если так то ошибка, описание ниже
                             }

                         }


InvalidOperationException: Collection was modified; enumeration operation may not execute.
System.Collections.Generic.List`1+Enumerator[UnityEngine.GameObject].VerifyState () (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:778)
System.Collections.Generic.List`1+Enumerator[UnityEngine.GameObject].MoveNext () (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:784)
EditorGUI.HEXSPlacementHighSize1 () (at Assets/Scripts/EditorGUI.cs:296)
EditorGUI.Update () (at Assets/Scripts/EditorGUI.cs:65)
tracer07Дата: Четверг, 05 Февраля 2015, 21:00 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Попробуй HEXListHIGH.Remove(HEXListHIGH.IndexOf(GOBJ));
88mml72Дата: Четверг, 05 Февраля 2015, 23:47 | Сообщение # 3
частый гость
Сейчас нет на сайте
Assets/Scripts/EditorGUI.cs(303,45): error CS1502: The best overloaded method match for `System.Collections.Generic.List<UnityEngine.GameObject>.Remove(UnityEngine.GameObject)' has some invalid arguments

Добавлено (05 февраля 2015, 23:47)
---------------------------------------------
проблема решается если выставить удаление из массива за тельные скобки foreach

WPhoeniXWДата: Пятница, 06 Февраля 2015, 03:27 | Сообщение # 4
участник
Сейчас нет на сайте
1

" Кто в страхе живет, тот и гибнет от страха. "
Леонардо Да Винчи


Сообщение отредактировал WPhoeniXW - Пятница, 06 Февраля 2015, 03:28
berilДата: Пятница, 06 Февраля 2015, 18:55 | Сообщение # 5
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата 88mml72 ()

проблема решается если выставить удаление из массива за тельные скобки foreach

Ты сам ответил на вопрос. В цикле foreach нельзя изменять значение элемента коллекции, а так же добавлять и удалять элементы




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
shizofrenДата: Суббота, 07 Февраля 2015, 00:33 | Сообщение # 6
Starting MS-DOS...
Сейчас нет на сайте
88mml72, используй это:

Код

for(int i=0; i< HEXListOBJ.Count; i++)
{
     //Если что-то нужно удалить
     HEXListOBJ.RemoveAt(i);
     break;
}


Моя команда
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » как удалить лист элемент по индексу, тип GameObject
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг