首页 文章

哪种方式更适合处理AssetBundle下载管理

提问于
浏览
1

在提出问题之前,我将解释我需要什么样的要求 . 在我的游戏中,需要很多纹理来播放它 . 由于这个和ipa大小(iOS)的限制,我认为使用assetbundle是必须的 . 因为现有的代码实现,我为1个图像创建了assetbundle,1个资产包 . 例如:我有100个图像,然后我将创建100个assetbundle(mainasset将是纹理),具有相同的名称 .

我希望我的游戏可以在用户第一次下载所有需要的资产包时离线播放 AFTER . 因此,如果用户第一次玩游戏或下载我游戏的更新版本,游戏将被强制进入特殊场景,在那里它将下载所有需要的资产捆绑,之后,用户可以在没有互联网连接的情况下玩游戏 .

我认为有关如何下载这些assetbundle的方法有两种:

  • The normal way: 我将所有100个资产捆绑包放在我的服务器中,并放入1个xml文件,其中包含所有assetbundles信息及其版本 . 在特殊场景,游戏将下载xml文件,并从中通过 WWW.LoadFromCacheOrDownload 下载100个资产包 . 目的只是将所需的资产捆绑存储到游戏缓存中 . 成功下载了所有这些后,用户可以离线播放,如果游戏需要加载assetbundle,那么我只需要更新 WWW.LoadFromCacheOrDownload ,因为它仍然在缓存中,它可以离线播放 . 当然,我认为只要我不明确清除缓存,缓存仍然存在 .

  • The hard way: 我将所有100个assetbundle压缩为1个zip文件 . 游戏将下载xml文件和zip文件 . 我将解压缩zip,并将所有100个assetbundle放入移动存储(iOS和Android) . 所以在那之后,如果游戏需要加载资产,我只需调用 WWW.LoadFromCacheOrDownload ,其中url正在使用指向移动存储路径的 file:/// 方案 .

摘要:

The Normal Way:

减:我认为缓存仍然存在,但如果缓存中有问题,用户就无法玩游戏 .

另外:简单的实现,因为假设缓存会很好 .

The Hard Way:

减:好吧,我不知道它是否为负点,但是这一点,我必须实现未归档的zip文件并将它们存储在存储中 . 服务器端和应用程序端需要更多实现 . 由于我是新手,我不知道这方面的最佳做法 .

另外:更强大

哪一个更好?或者更好的推荐?

1 回答

  • 2

    我们基本上为您的应用程序实现了正常和艰难的混合方式 . 与你的一样,它的质地很重,因此大多数纹理资产都被打包到自己的资产包中 . (在我们的应用程序纹理中有一个逻辑分组,所以我们不单独打包它们) . 但是,我们不会将它们直接下载到缓存中 . 我们将这些下载到SD卡并从那里加载它们(或者从缓存中获取它们),因为我们需要它们 . (即LoadFromCacheOrDownload) .

    这取决于你的情况,但我通常建议不要将它们打包成一个zip文件 . 主要是关于更新 . 在我们的情况下,资产需要进行一些更新,或者我们希望稍后添加资产 . 通过使用包含版本控制数据的XML文件或数据库,更新设备上的数据是微不足道的 . 如果只有一个包更改,您只需要下载该单个包 . 在我们的情况下,2MB对450MB是完全不同的 .

相关问题