【问题标题】:Xcode allows you to make a "sprite Atlas" from within Assets.xcassets, is it actually an atlas?Xcode 允许您从 Assets.xcassets 中制作“精灵图集”,它实际上是图集吗?
【发布时间】:2017-07-26 23:33:21
【问题描述】:

如果您在 Assets.cxassets 文件夹中并点击加号,您可以添加一个新的“sprite atlas”和/或新文件夹。

当您从此菜单创建“精灵图集”或文件夹时,它们看起来完全相同。我的印象是,atlas 文件夹的末尾必须有后缀“.atlas”?

我读到使用精灵图集通常更适合屏幕上的大量重复纹理。当我开始我的项目并将所有图像放入该文件夹时,我在 Assets.cxassets 中创建了一个“精灵图集”。

我读得越多,我就越觉得我做错了。我在网上找不到任何关于在 Assets.cxassets 中包含“atlas”文件夹的信息。当我像上面提到的那样创建 atlas 文件夹时,它没有“.atlas”后缀,它只有一个通用名称“sprites”

我也将所有这些精灵与瓦片集一起使用,在瓦片集中使用 .atlas 是常见的做法吗?

感谢所有建议。

【问题讨论】:

    标签: ios xcode swift3 sprite-kit


    【解决方案1】:

    是的,这是一本真正的地图集。

    当您从 Project Manager 打开资产目录并添加诸如地图集、组(文件夹)或 Watch Complication 之类的内容时,这些内容在 Xcode 中可能看起来与您相同...

    但在幕后那些不一样。这是这些文件夹在磁盘上的样子:

    因此,如果您右键单击资产目录,然后选择 Show In Finder,您会注意到 Atlas 文件夹上有 .spriteatlas 扩展名,Complication 文件夹上有 .complicationset 扩展名,并且没有在New Folder 上找到扩展名。这意味着资产目录中的每个文件夹实际上都有自己的类型,由其扩展定义。

    这是来自docs

    文件夹表示的内容类型在 文件夹名称的扩展名。例如,一个名为 PosingLlamas.imageset 有一种图像集。

    因此,您可以得出结论,如果您对 sprite atlas 功能感兴趣,您必须创建一个新的sprite atlas,而不是a group (folder),剩下的工作由 Xcode 为您完成。否则批量渲染(在单个绘制通道中渲染多个纹理)将不起作用,这是精灵图集的主要功能,并且对性能有很大帮助。

    【讨论】:

    • 非常感谢您的详细解释!
    • 从我在 Xcode 11 中看到的情况来看,是的,spriteatlas 扩展已创建,但是在应用程序二进制文件中查看生成的 CAR 文件时,没有生成 sprite atlas。所有单独的图像仍然存在。
    • @PKCLsoft 我看到了同样的情况,没有创建图集,而是单独的图像在那里,并且绘制调用也没有批处理。 Xcode 13.
    • @Calin 是的,我仍然不相信有任何性能提升;唯一的优势是应用程序精简,并且不再需要像过去那样为每种设备分辨率提供图像资源。
    • @PKCLsoft 我同意。我也无法表达这对性能的影响,因为我没有遇到绘图调用未批处理的问题,但这仍然是一种非常奇怪的行为。显然,Xcode 将单个图像和图集添加到包中,并且在使用包中的图集时它不会批量绘制调用。有关更多详细信息,您可以查看stackoverflow.com/questions/69957326/…,它显示了两种不同的绘制调用批处理或不批处理的方法。这对我来说似乎是一个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多