【发布时间】:2015-09-11 14:18:42
【问题描述】:
我正在开发一个 os x / iOS 填字游戏,它使用 SKLabelNode 在 SKNode 子类上将填字游戏字母显示为子类。
所以每个字母都有SKNode.SKLabelNode。在不使用 SKLabelNode 的情况下,抽奖次数在 6-8 范围内。使用 SKLabelNode 后,场景中的儿童数量可以增加到近 100 个。
我现在正在寻找一种方法来避免这种情况,并提出将 SKLabelNode 光栅化为纹理的想法,但这并不会降低绘制次数,因为仍然有许多不同的纹理。
我现在的想法是栅格化这些 SKNode-子类并将纹理放入纹理图集。
所以问题是,是否可以在运行时创建纹理图集?如果单个纹理发生变化怎么办?是否可以在图集中交换单个纹理,或者我必须重建它?
也许有一种“最好的方法”来处理大量不同的 SKLabelNodes!?
【问题讨论】:
-
您的应用是否因 FPS 低而出现性能问题?
-
没有。绝对不。但是对于 SKLabelNode,我的节点数约为 300 个节点,绘制数为 100。我现在已经为每个可能的大小写和字母创建了纹理,并创建了一个纹理图集,结果 80 个节点 并且少于 7 次绘制 ...我认为这更好,对吧?!
-
@SimonKemper 您不必在运行时创建图集,只需像往常一样创建它。我刚刚搜索过,这里是可用于在运行时创建纹理图集的方法(如果你真的需要的话):developer.apple.com/library/ios/documentation/SpriteKit/…:我同意 Sangony 的观点,你应该避免过早的优化,但是像这样使用 SKLabelNodes 不是高性能的解决方案,而且真的是不必要的 IMO。
标签: ios sprite-kit sknode sklabelnode sktextureatlas