как балансировать между рендерингом пакета и UIPanel.LateUpdate в производительности Unity NGUI? - PullRequest
0 голосов
/ 22 октября 2018

Я делаю полноценную 2D-игру с полным NGUI для Android.
Но в игре есть некоторые проблемы с производительностью.

Я использовал «Глубокое профилирование» в редакторе единиц, обнаружил, что в скрипте есть задержка.
Самая большая часть времени занимает «UIPanel.LateUpdate ()».

Следуя моей архитектуре, используя наименьшее количество UIPanels, потому что по причине производительности у каждого UIPanel есть свой собственный пакет рендеринга.
'Deep Profiler' показывает мне, что его количество пакетов рендеринга составляет 31 , а UIPanel.LateUpdate time is 4.7ms

Но мое найденное решение говорит мне: «Не меняйте преобразование UIWidget под UIPanel и установите UIPanel« статическим »: это может уменьшить UIPanel.LateUpdate ().

Таким образом, я изменил каждый подвижный 2d-объект, чтобы он имел собственную UIPanel и сделал их статичными (конечно, не изменяйте преобразование дочернего виджета).
В этом случае, профилировщик показывает 1.7ms для UIPanel.LateUpdate (), но пакет рендеринга увеличен до 45 .

Я понял, что это компромиссное состояние.

Итак, вопрос в том, что:
Какое значение имеет сбалансированная архитектура для оптимизированной производительности между количеством UIPanel (drawcall) и временем, затрачиваемым на UIPanel.LateUpdate ()?

Я не могу сделать стандарт для этого.
Я знаю, что ответом не может быть конкретное число или одно слово, но я хочу ноу-хау.

например : 45 раздач в порядке.Вы можете сделать панели до 100 колокольчиков.Или, абсолютно в любое время, уменьшение количества обращений к вызову важнее, чем UIPanel.LateUpdate, потому что эта функция занимает не так много времени, как показывает профилировщик в реальном телефоне.Или существует способ привязки глубины одной панели к одной партии.или иначе.

Пожалуйста, помогите мне.или приветствуем обсуждение!

...