我开始在XCAssets文件夹中使用新的Sprite Atlas,而不是在项目文件夹中使用我的地图集。但是我注意到,当我这样做时,我的节点不再被批量渲染,导致大量低效的绘制调用。这完全违背了使用地图册的目的!
要清楚这是我用来获取地图集的代码。
let atlas = SKTextureAtlas(named: "Sprites")
“Sprites”是在XCAssets文件夹中创建的Sprite Atlas。
有没有人有解决方法,或者我在项目文件夹中制作了Sprite Kit Atlases。
我正在使用Xcode 7.2 beta。
我想使用新的Sprite Kit Atlases的原因是this问题。
答案 0 :(得分:4)
我在输入问题时找到了一个解决方法。您可以通过XCAssets文件夹中的图像以编程方式创建SKTextureAtlas,如下所示:
let atlas = SKTextureAtlas(dictionary: ["Head":UIImage(named: "Head")!, "Body":UIImage(named: "Body")!])
这显然只是一种解决方法。希望Apple在更高版本的Sprite Kit中修复此问题。这是一个非常严重的性能错误,所有开发人员都应该知道。即使是Apple的示例项目也使用了新的Sprite Atlases,因此您认为它们可以进行批量渲染。
更新1 来自Apple的回复:
感谢您告诉我们这个问题。我们正在 调查原因,并将在未来的iOS中加入修复 更新。同时,您可以应用两种解决方法: 1.在.atlas文件夹中创建和使用纹理图集。 2.继续在资产目录中使用纹理图集,但部署目标设置为iOS 8.0。
更新2 苹果表示可能已在iOS 10中修复过。要进行调查。
答案 1 :(得分:1)
这似乎在iOS 10中得到修复。唯一令人烦恼的是,即使它们位于不同的地图集中,您也无法拥有两个具有相同名称的图像。
编辑:这仅在iOS 10中修复。如果您在iOS 9中运行,那么会发生大量内存泄漏,导致应用程序崩溃。