【问题标题】:iOS: Can I use Texture Atlas already created with Adobe Animate?iOS:我可以使用已经用 Adob​​e Animate 创建的 Texture Atlas 吗?
【发布时间】:2019-01-01 13:53:21
【问题描述】:

我知道我可以在 Xcode 中添加单个图像的序列,并让它创建纹理图集。这个过程在易于搜索的场所中得到了很好的描述。 (比如这个。)

我从设计师那里得到了图集,这些图集是用 Adob​​e Animate (v18.0) 创建的,已经合并到完整的工作表中,此外还有描述动画的随附 XML 文件。 (其中子图像和显示帧不匹配 1:1,所以很难看出 Xcode 是如何解决这个问题的。)

从 SpriteKit 文档中我不清楚是否/如何使用这些预定义的纹理图集。这可能吗?

【问题讨论】:

    标签: ios sprite-kit adobe sprite-sheet


    【解决方案1】:

    如果您要获得预烘焙的纹理图集,以及外部生成的精灵应在何处获取其纹理的描述,您可能必须使用您使用 init(rect:in: ) SKTexture 的初始化器。

    您需要从 XML 文件中读取精灵的范围,然后从图集创建纹理。然后,您可以创建一个新的 SKTexture 对象,该对象代表较大纹理的一部分,作为精灵的纹理。

    这是未经测试的伪代码,但它显示了过程:

    let spriteRect = (get the rect from the XML)
    let atlas = SKTexture( imageNamed: "myTextureAtlas" )
    let spriteTexture = SKTexture( rect:spriteRect, in:atlas )
    let sprite = SKSpriteNode( texture:spriteTexture )
    

    完成此过程后,您可以使用常用方法为精灵设置动画,例如使用纹理图集中的纹理列表设置 SKAction。

    【讨论】:

    • 谢谢你抄送。我有一半以上的想法要求艺术家只给我所有单独的文件并让 Xcode 创建图集。但是..我认为信息(关于特定动画的信息会丢失。看起来我有一些实验要做。
    • 我不清楚的一件事。在我看来,Xcode 过程似乎只涉及提供单个帧的集合,而构建过程会创建 Texture Atlas 和描述性 XML 文件。在这种情况下,Xcode 怎么知道图像边界在哪里?特别是如果图像不均匀分散?
    • 如果让 Xcode 构建图集,那么这一切都由 SpriteKit 引擎在内部处理。当您请求 SKSpriteNode( imageNamed:"(whatever)" ) 时,它只会将命名 sprite 作为纹理图集的一部分提供给您,就像您为手动处理的图集完成了上面的代码一样。如果您的艺术家向您提供专有动画数据,您可能不得不推出自己的解决方案; SpriteKit 引擎不知道如何处理任意 XML 文件。您需要对其进行解析并将其转换为 SpriteKit 指令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多