主要Bug,在XCAssets文件夹中创build的Sprite Atlas不支持批量渲染
我开始在XCAssets文件夹中使用新的Sprite Atlas,而不是在项目文件夹中使用我的图集。 但是我注意到,当我这样做时,我的节点不再被批处理渲染,导致大量低效的绘制调用。 这完全打败了使用图集的目的!
要清楚这是我用来获得地图集的代码。
let atlas = SKTextureAtlas(named: "Sprites")
“Sprites”是在XCAssets文件夹中创build的Sprite Atlas。
有没有人有解决方法,或者我坚持在项目文件夹中制作雪碧套件集合。
我正在使用Xcode 7.2testing版。
之所以我想使用新的Sprite套件集群是因为这个问题。
我在input问题时发现了一个解决方法。 您可以从XCAssets文件夹内的图像以编程方式创buildSKTextureAtlas,如下所示:
let atlas = SKTextureAtlas(dictionary: ["Head":UIImage(named: "Head")!, "Body":UIImage(named: "Body")!])
这显然只是一个解决方法。 希望苹果在更高版本的Sprite Kit中修复这个问题。 这是一个非常严重的性能问题,所有开发人员都应该知道。 即使苹果的示例项目使用新的雪碧图集,所以你认为他们将有批处理渲染工作。
更新1苹果的回应:
感谢您让我们知道这个问题。 我们目前正在调查原因,并将在未来的iOS更新中join修正。 同时,您可以应用两种解决方法:1.在.atlas文件夹中创build和使用纹理图集。 2.继续在资产目录中使用纹理图集,但部署目标设置为iOS 8.0。
更新2苹果表示可能已经在iOS 10中修复了。要去调查。
这似乎是在iOS 10中修复的。唯一令人讨厌的是,即使在单独的地图集中,也不能有两个具有相同名称的图像。
编辑:这只是在iOS 10中修复。如果你正在运行在iOS 9,有一个巨大的内存泄漏,将导致应用程序崩溃。