@smokerrr86

Как формируется порядок элементов массива gameObject-ов?

В методе Start() формируется массив из геймобджектов:
atoms = GameObject.FindGameObjectsWithTag("atom");
по индексам они распологаюся вот так:
646cc1c20cc01021542769.png

Почему именно такой порядок? Можно сделать чтобы объекты в массиве были по алфавиту?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Есть (как минимум) три фактора, которые внесут элемент хаоса в попытки создать правильный порядок:
1) Способ сохранения. Данные сцены сохраняются в yaml структуру процессом, вообще не гарантирующим, что порядок сохранения элементов будет как-то соответствовать их порядку в иерархии сцены. И даже более того, сам этот процесс немного меняется от версии к версии, поэтому более детальный ответ будет сильно специфическим.
2) Способ загрузки. Перед передачей данных сценическому графу их нужно считать анализатором, и хоть он и правда читает построчно, но в итоге преобразования в доступные структуры порядок данных также меняется. Могу лишь сказать, что на это как-то влияет fileID объектов, но детальнее я не разбирал эту тему.
3) Вы сами вносите ещё больше беспорядка в процесс, руками меняя порядок элементов в иерархии. Просто потому что это никак не влияет на структуру файла сцены.

Тем не менее порядок гарантировать всё же можно. Например... отсортировав, как и предлагал отвечающий выше.
// using System.Linq;
atoms = GameObject.FindGameObjectsWithTag("atom");
Array.Sort(atoms, (a, b) => string.Compare(a.name, b.name));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos Куратор тега Unity
Скорее всего - по положению в иерархии. Но это недокументировано. Соответственно - сортируйте сами как вам надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы