Мне нужно предложение. Я делаю игру с большим количеством SKShapeNodes. Итак, мой FPS составляет около 18. Есть ли какие-либо предложения о том, как увеличить FPS в таких играх? Сумма SKShapeNode в полной игровой сцене являются 220.Как увеличить FPS в игре spritekit с большим количеством SKShapeNodes?
1
A
ответ
1
SKShapeNode
весьма интенсивно, поскольку производительность SpriteKit является rasterising (вычисления пикселей вашей формы) каждый кадр вместо того чтобы вычислять его один раз и чем многократно использовать его.
Два варианта я вижу, являются:
- Создание
SKTexture
(ы) объект (ы) с узлами формы, а также того, чтобы отображать эти текстуры сSKSpriteNode
вместо отображения непосредственно вашиSKShapeNode
объектов. - Создание некоторые/все ваши
SKShapeNode
объекты детейSKEffectNode
и установить егоshouldRasterize
свойствоtrue
, что это означает, что она будет rasterise наSKEffectNode
детей один раз, кэш, что было вынесено и использовать его в то время как нет никаких изменений.
Что вы должны использовать, зависит от того, чего вы пытаетесь достичь, является ли форма этих узлов меняющимися со временем? Огибают ли эти фигуры? Все ли они меняются или движутся или только некоторые из них?
Спасибо, Тревор Энн Дениз! Я использую эти фигуры только для перемещения, и если это нужно удалить, чем размножение новых фигур за раз. Итак, первый вариант лучше для меня? –
@NurassylNuridin Добро пожаловать, нужно иметь в виду только одно: кеширование действительно эффективно только тогда, когда нет изменений в фигурах, поэтому кешируйте то, что не меняется. Если вы просто хотите переместить некоторые узлы, переместите непосредственно узел, который их кэширует, поэтому он будет просто «перемещать текстуру», а не перерисовывать все. –
Но, кстати, я считаю, что перемещение SKEffectNode может в некоторых случаях вызвать «новый рендер» своих детей. –