ios - SpriteKit `sprite.atlas` 包何时以及如何压缩/优化?

标签 ios xcode sprite-kit

我的 SpriteKit 游戏中有一个 sprites.atlas,这是我第一次尝试。在其他游戏库中,如 cocos2d,通过创建 spritesheet 并使用像 pvr 这样的优化格式可以节省很多。所以我在构建游戏后查看了派生数据文件夹,并在编译游戏中找到了 sprites.atlasc 文件夹。该文件夹包含一个从我的个人 .png Assets 编译的 Sprite 表(耶!)。我注意到编译后的表格是一个 .png 文件,出于好奇我决定将它上传到 http://tinypng.com , 发现图像可以轻松压缩 77%。

这向我表明,要么我没有看到最终 Assets ,要么我没有正确调整某些设置,要么 .atlas 文件仍然不如创建一个 pvr sprite 表与像 TexturePacker 这样的工具。对于在 SpriteKit 中包含大量 Sprite 的 Assets 密集型 2D 游戏,要保持较小的最终二进制大小,最佳做法是什么?

最佳答案

SpriteKit 的纹理、纹理打包和纹理管理在 iOS 9 中已经从根本上被破坏了,而且短期内没有修复的迹象。

目前可能没有满足您要求的“最佳实践”,因为我怀疑整个 Assets 管理及其程序处于不断变化的状态。也许它们会以理想的方式在 iOS 10 中得到修复,但考虑到 iOS 9 和 Sprite Kit 的崩溃,我对此表示怀疑。

如果您不知道这个线程,通读一下会让您对问题有所了解: https://forums.developer.apple.com/thread/17463

这一篇也很有趣: https://forums.developer.apple.com/thread/14487

以上是 iOS 9 中 Sprite Kit 更普遍的问题的指示,并且应该让您感觉到这个东西是多么不成熟或不可靠,作为一个整体。

与您的问题更相关的是,像这样的事情没有答案: https://forums.developer.apple.com/thread/26059

如果您的问题是:

What are the best practices for an asset-heavy 2D game with lots and lots of sprites in SpriteKit for keeping final binary size small?

而且我们在这个问题中忽略了“SpriteKit”,答案比 SpriteKit 目前可用的任何选项都要好得多。

不幸的是,尽管同时声称它们易于使用且适合休闲游戏开发,但苹果公司似乎在推广、假定和声明其游戏引擎技术适用于 Assets 繁重的制作方面遇到了巨大的麻烦,而且两者都没有声称经得起任何审查。

在 iOS 8 末期的一小段时间里,大部分 Sprite Kit 都像宣传的那样工作,但随着 iOS 9 的出现,这一切都发生了变化。现在它的纹理处理已经恢复到 iOS 7 中普遍存在的问题,并且还有一些新问题.

Apple 论坛记录了其他重要问题,以及 iOS 9 的 Sprite Kit 中的各种性能问题。

然而,Apple 没有任何消息承认这些问题,更不用说解决它们了。

以当前状态推荐 Apple 的游戏技术是错误的。对 Apple 及其游戏技术缺乏有意义的批评并不意味着这些东西没有引人注目的缺陷。

直到他们真正下定决心让产品经理专注于他们的游戏技术并在他们工作时发布东西,我会说 cocos2D-X 和商业纹理包装器之一是满足您要求的最佳实践。

关于ios - SpriteKit `sprite.atlas` 包何时以及如何压缩/优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819175/

相关文章:

ios - Discard all changes in Xcode source control 实际上做了什么?

Swift:在原始 GameScene 上加载新的 SKScene? (仍然保留 GameScene 在下面?)

ios - 当我向 TestFlight 添加新的测试人员时,我是否必须为他们提供一个新的版本 "notified"?

ios - 我将 Parse Server 与 Heroku 一起使用,并且在使用 PFUser.requestPasswordResetForEmail 时遇到问题

ios - navigationController alpha 会重置吗?当应用程序从后台激活时

ios - SpriteKit - 多个对象的接触检测

swift - 如何快速将GameCenter放到应用程序上?

ios - iOS中音频文件的幅度谱

ios - iTunes Connect CFBundleShortVersionShort 必须包含更高版本

objective-c - Objective-C 中的 bundle 是什么?