2015-11-07 3 views
0

У меня есть небольшая игра, основанная на SpriteKit.SKLabelNodes drop fps

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

Эти узлы в основном представляют собой SKSpriteNodes с SKLabelNodes на них.

Когда у меня есть значительно большое количество узлов, количество розыгрышей увеличивается, а FPS резко падает.

Очевидно, что, когда я удаляю SKLabelNodes, показатель Draw остается низким. Но мне все еще нужны эти письма.

Вопрос в том, что это лучший способ добавить эти буквы, не отбрасывая FPS?

+2

Нарисуйте буквы в текстурах? – matt

+0

@ElleryAree Вы должны проверить BMGlyph и Glyph Designer. – Whirlwind

+0

@matt, это может помочь, я должен попробовать это так или иначе ... Хотя, если возможно, я хочу оставить возможность определить любой вариант письма/комбинации букв, который я могу поместить в узел ... –

ответ

1

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

Первый, был бы самым простым, - использовать shouldRasterize на существующих ярлыках. Это, похоже, не существует для ярлыков в Sprite Kit. DOH!

Используйте растровые текстуры как буквы на объектах, фактически как спрайты, то, что лучше всего справляется с комплектом Sprite Kit. Это будет включать использование генератора шрифтов растровых изображений, таких как отличный BMGlyph, как указано в Whirlwind в комментариях.

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

Вы также можете поменять буквы, но вам нужно будет думать о них как о разделах текстуры, а не как о письмах. Массив или словарь с позицией каждой буквы в текстуре, присвоенной чему-то легко запоминаемому, будут как простыми, так и простыми в использовании. Но трудоемкий настрой. Гораздо больше, чем SKLabelNode

Или вы можете пойти на дикую природу и создать текстуры с кодом, используя SKLabelNode на виртуальном объекте, а затем «рендеринг» или «рисование» на текстуре, а затем используя эту текстуру (например, s) для каждой буквы на объекты/спрайты. Подобно тому, как работает BMGlyph, но МНОГО больше времени и гораздо менее гибкий.

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

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