SKLabelNodes下降fps

时间:2015-11-07 16:05:55

标签: ios sprite-kit sklabelnode

我有一个基于SpriteKit的小游戏。

在这个游戏中,我使用大量带有字母(或字母组合)的节点,用户可以移动来构建单词。

这些节点基本上是带有SKLabelNodes的SKSpriteNodes。

当我有相当多的节点时,绘制计数会增加,FPS会急剧下降。

显然,当我删除SKLabelNodes时,Draw计数保持不变。但我仍然需要那些信件。

问题是,在不丢弃FPS的情况下添加这些字母的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

有三种方法可以做到这一点,每种方法都有不同的妥协方式。

第一个,是最简单的,就是在现有标签上使用shouldRasterize。对于Sprite Kit中的标签,这似乎不存在。 DOH!

使用位图纹理作为对象上的字母,实际上是精灵,Sprite Kit最好处理的东西。这将涉及使用位图字体生成器,例如Whirlwind在评论中指出的优秀BMGlyph。

这样做并不容易,因为编码部分会更加劳动密集,但你应该以这种方式获得绝对最佳的性能。

你也可以交换字母,但你需要将它们视为纹理的子部分而不是字母。一个数组或字典,每个字母在纹理中的位置分配给易于记忆的东西,既高效又易于使用。但是设置劳动密集。远远超过SKLabelNode

或者,你可以疯狂,用代码创建纹理,在虚拟对象上使用SKLabelNode然后“渲染”或“绘制”到纹理,然后将每个字母的纹理用于对象/精灵。与BMGlyph的工作方式类似,但更耗时且灵活性更低。

BMGlyph是速度和易用性的最佳组合,它也有一些非常奇特的效果,可以创建漂亮的文字。