苹果公司在SpriteKit项目中组织资产的推荐方式在引擎的历史过程中发生了很大变化。旧方法中还存在一些错误,这些错误阻碍了这些做法的实施和所需的解决方法。关于SO的旧Q&A充满了有关处理不再存在的错误的信息的过时或混乱的信息。 SO上需要有一篇帖子,告诉您如何实施该问题的当前解决方案,而不会被过时的工作流或已解决的错误的讨论所干扰。所以问题是这样的:
如何在SpriteKit项目中组织图像资产?一些Apple文档对use texture atlases to improve performance说。但是 SKTextureAtlas
class reference描述了用于创建纹理地图集和子画面地图集的选项。我应该使用哪一个,以及如何实现它?
最佳答案
在资产目录内创建一个精灵地图集。您可以获得拥有纹理图集的性能优势(旧方法是手动创建纹理图集),并且还可以轻松地在资产目录中组织图像资产。
In this WWDC video在时间戳18:06发言者说:
以常规方式在资产目录中组织图像资产:组
将它们命名为sprite地图集。而这是自动的
在构建时创建纹理图集,您可以通过
SKTextureAtlas类。
这在class reference doc中得到了确认(尽管不如视频中清楚):
创建纹理图集的首选机制是在资产中
目录...精灵图集提供纹理图集的优点
具有资产目录的管理功能。
视频和类参考文档都还提到了这种做法,您可以利用app thinning(在视频中进行了详细讨论)。
默认情况下,将使用资产目录创建新的Xcode游戏项目。或者,您可以通过选择文件>新建>文件... ,然后从出现的屏幕的资源部分中选择资产目录,来向项目中添加新的资产目录。
要添加精灵图集,请首先在项目导航器中选择资产目录。然后右键单击或在编辑器区域的大纲视图中选择加号按钮(+)。从出现的下拉列表中选择新Sprite地图集。
您在精灵图集中组织的图像资产将在构建时自动形成纹理图集。您可以通过以下代码从纹理图集加载图像:
let atlas = SKTextureAtlas(named: "Monster")
let frame1 = atlas.textureNamed("monster-walk1.png")