setText медленный со спрайт-китом

Наша первая игра вот-вот выйдет в эфир. Мы обнаружили, что производительность комплекта спрайтов достаточно высока. Мы перемещаем сотни спрайтов и создаем узлы эффектов и звуки. Однако вы не должны осмелиться установить счет. SKLabelNode работает очень медленно.

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

scoreLabel.text = [NSString stringWithFormat:@"Score: %d",my_score];

В диагностическом инструменте команда setText показывалась как самая дорогая. Мы даже позаботились о том, чтобы его вызывали не так часто. Это по-прежнему приводило к задержке, из-за которой спрайты дергались / дрожали / подпрыгивали. Как только мы удалили линию... мы получили плавное движение.

Если мы не можем использовать SKLabelNodes внутри игровой сцены, какие еще есть варианты?


person user3788162    schedule 29.06.2014    source источник
comment
растровые шрифты именно по этой причине. попробуйте дизайнер глифов, поставляется с узлом растрового шрифта sk   -  person LearnCocos2D    schedule 29.06.2014
comment
@LearnCocos2D К вашему сведению, я вижу мой ответ ниже - может загрузить шрифт «быстрее», если имя шрифта указано конкретно, например. Классная доскаSE-Regular.   -  person GilesDMiddleton    schedule 17.01.2015


Ответы (1)


Будьте осторожны, вы не загружаете полное семейство шрифтов. Если я загружу «Chalkboard SE», это займет 4-6 секунд и, похоже, сработает.

Но если я загружаю ChalkboardSE-Regular , это практически мгновенно ~ 100 мс или меньше.

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

Сначала я провел несколько тестов с семействами шрифтов, и результаты были довольно катастрофическими. Кэширование сильных ссылок не помогает. https://gilesey.wordpress.com/2015/01/14/ios-spritekit-font-loading-times-of-sklabelnodes/

person GilesDMiddleton    schedule 14.01.2015