Как переключать GameObjects без создания и уничтожения? - PullRequest
0 голосов
/ 15 сентября 2018

Я создаю бесконечный 2d генератор местности, в котором есть все виды плиток / блоков.Кроме того, некоторые плитки имеют специальные функции, которые описаны в их собственных сценариях.

Например, плитка улья может порождать пчел вокруг нее.Плитка грязи может превратиться в траву, если рядом есть трава и т. Д.

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

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

Кроме того, пул объектов здесь НЕ , так как здесь слишком много объектов, которые мне нужно создать вначало (10 тысяч).


Итак, это моя проблема:

У меня есть грязная плитка, на которой есть скрипт Dirt.По прошествии некоторого времени я хотел бы преобразовать его в фрагмент травы, в котором есть компонент сценария Grass, но не Dirt.

Есть ли лучший способ преобразования этих объектов GameObject, кроме удаления сценария Dirt и добавления сценария Grass?Кроме того, насколько эффективно добавление и удаление компонентов в больших количествах?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Вы можете создать родительский игровой объект, который содержит плитки разных типов.Затем активируйте / деактивируйте дочерние элементы по мере необходимости.
Ваша иерархия будет выглядеть следующим образом:

Tile (Holds switching functionality)
 |->Dirt Tile (Holds 'Dirt' functionality)
 |->Grass Tile (Holds 'Grass' functionality)
 |->Water Tile (Holds 'Water' functionality)
 |-> ...

Например, когда вы хотите, чтобы тайл был Dirt, вы активируете Dirt Tile игровой объект под Tile и отключите всех остальных детей.

Дайте мне знать, было ли это полезно или нет.

0 голосов
/ 15 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...