Повышение производительности с использованием нескольких CALayers в одном UIVew - PullRequest
1 голос
/ 13 февраля 2011

Я нахожусь в процессе написания простой 2D-игры, которая в настоящее время выполняет довольно много пользовательских рисунков для нескольких спрайтов при каждом обновлении - т.е. у меня есть вид игры, который делегирует всем спрайтам для выполнения рендеринга кварца (точка / линия на основе) при каждом обновлении.

Моя производительность в порядке, примерно 50 активных объектов рендерится, но теперь все начинает замедляться, поэтому я стремлюсь оптимизировать. Для этого я решил предварительно визуализировать свои спрайты в CALayer, а затем добавить это в представление игры.

Моей первой мыслью было дать каждому экземпляру Sprite CALayer, который добавляется в view.layer GameView в качестве подслоя. Это будет означать, что я использую один UIView с несколькими CALayers - по одному на игровой спрайт.

Будет ли незначительная потеря производительности, если я решу использовать UIView для каждого игрового спрайта?

Ответы [ 2 ]

1 голос
/ 21 июня 2012

UIViews являются частью цепочки респондента и добавят дополнительные издержки. Я начал с UIViews для спрайтов и обнаружил, что жесты стали вялыми. Я бы рекомендовал придерживаться CALayers

1 голос
/ 13 февраля 2011

Насколько я знаю, UIView - это довольно легкие обертки для CALayer, поэтому потеря производительности не должна быть слишком большой.Но я думаю, что спрайт был бы лучше представлен экземпляром CALayer, а не UIView.

...