2015-11-18 3 views
2

Какая уловка с сортировкой глубины UGUI по индексу родства? Я не вижу улучшения, но только минусы этогоugui розыгрыши звонков, вызванные индексом родного брата

Например, у меня есть игра с scrollRect, которая использует несколько объектов. Мои объекты имеют несколько изображений и текст. Если вы заказываете их следующим образом:

-поперечник

-объект

-Image

-Text

-Image

-Text

-Image

-Text ... и т.д.

вы получите 6 drawCalls для каждого объекта. Для 10 объектов, которые используют один и тот же шрифт и одинаковое изображение, вы получите 60 DRAW CALLS !!!

Хорошо, вы можете оптимизировать их следующим образом

-поперечник

-объект

-Image

-Image

-Image

-Text

-Text

-Text

... и т.д.

И вы будете иметь одну партию 3 изображений и одну партию из 3 текстов для каждого объекта. Но вы все равно получите 2 розыгрыша для каждого объекта, таким образом, 20 обратных вызовов для 10 ИДЕНТИЧЕСКИХ ОБЪЕКТОВ.

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

-объект

-Text (1 ничья вызов)

-Image

-Image (1 ничья вызов - порционный с приведенной выше)

-Text (1 ничья вызова)

-Image (1 вызов отрисовки)

-Text (1 вызов отрисовки)

-Image (1 вызов отрисовки)

-Text (1 вызов отрисовки)

Я не могу изменить иерархию, так как некоторые изображения кнопки и для того, чтобы сохранить свои тексты остры и сосредоточены на всех аспектах они должны быть детьми кнопок и привязаны к ним. Мой объект генерирует 7 обратных вызовов и имеет 5 видимых объектов в 5 разных видах прокрутки, что дает мне 7 * 25 = 175 обратных вызовов.

Теперь, используя глубину z, у нас было бы всего 2 вызова рисования. И таким образом возникает вопрос, какой улов этот подход? Зачем Unity делать это? Есть ли положительный результат для этого, и я слишком слеп, чтобы увидеть его?

+0

Я думаю, что этот вопрос будет больше шансов получить хороший ответ на [gamedev.se]. – Nox

ответ

0

Я думаю, это все возвращается к порядку рендеринга и дозирования. Чтобы исследовать, что в индивидуальном обратном вызове, используйте Unitys, встроенную в Frame Debugger, очень полезный инструмент.

Если вы хотите оптимизировать это дальнейшее использование Packing Tag в настройках спрайтов. Unity создаст для вас атлас пользовательского интерфейса, и ваши призывы к рисованию будут резко сокращены.

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^