Вопросы
Vitaliy Mubarakov

Почему у Unity нет нормальной иерархии? Папки, группы и т.п

Что бы сделать группу объектов, нужно создать пустой объект и делать остальные объекты его дочерними. Может эта функция есть, просто я о ней не знаю? Слышал только о платных решениях.

{ "author_name": "Vitaliy Mubarakov", "author_type": "self", "tags": [], "comments": 31, "likes": 2, "favorites": 9, "is_advertisement": false, "subsite_label": "ask", "id": 819192, "is_wide": true, "is_ugc": true, "date": "Thu, 05 Aug 2021 07:21:15 +0300", "is_special": false }
0
31 комментарий
Популярные
По порядку
Написать комментарий...

А в чем отличия будет? 

0

В том что созданные папки не будут существовать в мире игры. 

2

Теги, слои.

Суть этого решения в том, что дочерними ты назначаешь объекты, чей трансформ и состояние зависит от тех же показателей родительского объекта. Тот же трансформ делится на основе этого на глобальный и локальный, например.

Да и проблемы в создании пустого объекта нет, он ни с чем не взаимодействует без скриптов и коллайдера.

13

Кажется просто кто-то с джавой не работал/

3

Да и проблемы в создании пустого объекта нет, он ни с чем не взаимодействует без скриптов и коллайдера.

Есть проблемы. Даже пустые ноды негативно скажутся на производительности, если вложенность большая.

1

Но ведь вариант с наследованием от пустого объекта удобнее же. Можно легко оперировать группами однотипных объектов

0

Если ты создаешь пустой объект без рендереров и физики - формально, он и не существует там

0

технически у него есть transform. Не знаю на сколько сильно это замедляет прогрузку уровня, но в моём понимании группы и объекты это совершенно разные вещи. 

0

насколько это замедляет прогрузку

Это буквально 9 float, 36 байт.

0

Если так считать - то 10 float - кватернион из 4х элементов состоит.
Ана самом деле сильно больше. Любой объект это gameObject у которого есть компонент transform.
У трансформа есть parent, isEnabled и прочее безобразие. У go свои приколюхи, типа isActive и прочее, не забываем про instanceId. В общем-то каждый объект на сцене байт по 100 и более сжирает имхо. Но это в целом несущественно, чтобы экономить на папках.

1

Так если тебе ненужна трансформация, что ты собираешься грубировать?

0

а зачем мне позиция группы? Группа должна быть отдельна от мира игры

0

С чего бы? Объекты находятся в мире игры, но группа объектов уже нет?

Сцена, если что, это буквально мир игры, и всё, что в ней находится, является его частью. ред.

0

Я не про объекты группы, а про саму группу которая должна существовать только в интерфейсе самого движка. Возьмём группу в фотошопе, она не существует на изображении, а создана лишь для удобства сортировки слоёв.

0

Она существует на изображении как часть трансформации. То есть ты можешь нажать на эту гурппу и перетащить все в этой группе внутри изображения. То есть это та же группа трансформации

4

Кстати да. Теперь я окончательно запутался в этой жизни.

1

Холст и сцена это немного разные вещи, тащемта. Да даже так, та же папка дублирует множество вещей, которые есть в слое, вроде прозрачности, метода наложения, масок, чтобы управлять дочерними слоями. Тут абсолютно то же самое, только с трансформом.

0

Иногда хочется сгруппировать объекты по их смыслу в сцене. Например все менеджеры чтобы их легко было найти. Тут бы и пригодился функционал тегов, и если бы можно было легко сгруппировать все объекты с одним тегом, не убирая при этом остальные - это было бы очень хорошо. Трансформ иногда не подходит, т.к. например менеджеры могут быть помечены атрибутом [Don'tDestroyOnLoad] который рекомендуется выносить в root Gameobject.

0

Так теги ж есть. Кроме них ещё есть: возможность создать лист со ссылками на объекты (например, чтобы объекты добавлялись туда на фабрике, при инициализации), слои, события, коллбеки или вообще DI, чем они не угодили для этих целей? ред.

0

Согласен, в приведенном мной примере менеджеры вообще можно не выносить на сцену, а все в коде делать (там уж как угодно). Я просто хотел показать что иногда родительский транформ ну нафиг не нужен, а функционал объединения в сцене нужен. Например сгруппировать все выпущеные проджектайлы в эдиторе для дебага. В конечной игре им еще один родительский транформ нафиг нужен, они никогда все вместе не будут передвигаться.

0

Хотя только что подумал что это легко решается platform directives для едитора и всего остального. В общем то обходные пути есть.

0

Что тебе групировать тогда? Тогда и групировать ненадо раз тебе ненужно чтобы они были вместевсе время. Если они не находятся вместе то и групировать ненадо

0

Тоже думал об этом
Объекты без transform или фейковые могли бы решить дело.
Но вообще на пустой GO не очень большой оверхед, а для сборки вне редактора можно сделать рождение новых копий в корне.

1

Недавно смотрел roadmap Unity. Там в планах есть эта функция.

0

Вот тут планы развития редактора Unity:
https://unity.com/ru/roadmap/unity-platform/editor

В разделе Under Consideration (значит, думают, нужно или нет):
https://portal.productboard.com/ca1chnbwvzw1eg5yjc5rijnj/c/392-hierarchy-folders

- создание папок в иерархии для удобства организации объектов. Как и в комментариях пишут, папки существуют только на этапе работы в редакторе.

Там можно проголосовать за эту функцию.

1

Ну так подскажи им идею

0

Я уже плохо помню юнити. Но на сколько я помню это иерархия трансформации. А это влияет на рендер.  А что ты еще хочешь там хранить кроме трансформируемых объектов?

0

да, к сожалению в плане организации объектов в сцене приходится делать кастыли - либо пихать дочерними объектами в пустой ГО (что в принципе не сильно плохо, главное чтоб иерархия не была слишком глубокой), либо иметь плоскую иерархию и разделять на группы все теми же пустыми ГО с подходящими именами (e.g. "—-Lighting-—")

0

+ к плоской, и еще эти объекты (--Lighting--) помечать тегом EditorOnly, они тогда в билд не входят

0

Простота реализации. Иерархия в юнити соответствует тому как объекты в памяти лежат (поэтому совать объекты, которые часто меняют свое содержимое, в начало не рекомендуется).

В общем-то как реализовали давно, и теперь живут с этим не знают что делать, ибо легаси.

0
Читать все 31 комментарий
null