Текстовый комплект с SKLabelNode

Кажется, невозможно использовать текстовый набор, атрибутированную строку и менеджер компоновки со Sprit Kit SKLabelNode.

Интересно, как игра Sprite Kit отображает длинный текст, который нужно разбить на несколько строк и атрибутивную строку?


person Elliot Yap    schedule 21.03.2014    source источник


Ответы (3)


Строки с атрибутами и перенос строк не поддерживаются SKLabelNode.

Боюсь, если вам это нужно, вам решать, как это реализовать. Вы можете использовать несколько узлов меток для отображения нескольких строк и, возможно, написать собственный инструмент, который нарезает атрибутированные строки новой строки на несколько меток с интервалом между строками и соответствующим цветом. Возможно, такая библиотека уже существует.

Альтернативой является отображение обычного текстового представления поверх SKView.

person LearnCocos2D    schedule 21.03.2014
comment
Я ненавижу SpriteKit, все функции, которые мне нужны, в нем отсутствуют :-( - person WebOrCode; 01.08.2014
comment
Тогда не используйте его или ищите обходные пути. Не похоже, что эти вещи специфичны для SK, поскольку я помню, что cocos2d также не поддерживает строки с атрибутами. - person LearnCocos2D; 01.08.2014
comment
Ну, я должен найти обходные пути :-). Мой аргумент заключается в том, что в SpriteKit, особенно в этом SKLabelNode, отсутствуют многие базовые функции, например. Я даже не могу поставить \n в нем. - person WebOrCode; 01.08.2014
comment
Скорость имеет первостепенное значение в движке рендеринга. Обнаружение переноса строк занимает много времени, особенно если учесть, что для этого требуется воссоздание текстуры этикетки. Если я правильно помню, CCLabelTTF cocos2d также не мог выполнять перенос строк в течение длительного времени. - person LearnCocos2D; 01.08.2014
comment
Хорошо, приятно понимать фон, они оптимизируют скорость за счет функций. - person WebOrCode; 01.08.2014

Вы можете проверить ASAttributedLabelNode, реализацию SKLabelNode с поддержкой строк с атрибутами.

https://github.com/alex-alex/ASAttributedLabelNode

person Şafak Gezer    schedule 08.09.2014

Начиная с iOS 11 SKLabelNode, кажется, поддерживает строки с атрибутами и автоматические разрывы строк. В документацию класса добавлены новые свойства:

Имейте в виду: обновления SpriteKit имеют историю введения новых функций с ошибками, поэтому вам, вероятно, придется протестировать их самостоятельно.


Примечание о производительности SKLabelNode:

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

SKView имеет функцию-член, которая преобразует узел в текстуру:

- (SKTexture *)textureFromNode:(SKNode *)node;
person ZanYzer    schedule 11.09.2017