在XCAssets文件夹中创建的主要Bug,Sprite Atlas不支持批量渲染

时间:2015-11-28 21:44:31

标签: ios macos sprite-kit xcode7

我开始在XCAssets文件夹中使用新的Sprite Atlas,而不是在项目文件夹中使用我的地图集。但是我注意到,当我这样做时,我的节点不再被批量渲染,导致大量低效的绘制调用。这完全违背了使用地图册的目的!

要清楚这是我用来获取地图集的代码。

let atlas = SKTextureAtlas(named: "Sprites")

“Sprites”是在XCAssets文件夹中创建的Sprite Atlas。

有没有人有解决方法,或者我在项目文件夹中制作了Sprite Kit Atlases。

我正在使用Xcode 7.2 beta。

我想使用新的Sprite Kit Atlases的原因是this问题。

2 个答案:

答案 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中运行,那么会发生大量内存泄漏,导致应用程序崩溃。