在提出问题之前,我将解释我需要什么样的要求。在我的游戏中,玩它需要很多纹理。由于这一点以及 ipa 大小(iOS)的限制,我认为使用assetbundle 是必须的。因为现有的代码实现,我创建了资产包,1 个资产包用于 1 个图像。例如:我有 100 个图像,然后我将创建 100 个资产包(其中 mainasset 将是纹理),具有相同的名称。
我希望我的游戏可以离线玩在用户第一次下载所有需要的资产包所以如果用户第一次玩或者下载我的游戏的更新版本,游戏会被强制进入特殊场景,下载所有需要的assetbundle,之后用户可以在没有互联网连接的情况下玩游戏。
我认为有两种方法可以下载这些资产包:
正常方式:我将所有 100 个资产包放在我的服务器中,并放入 1 个 xml 文件,其中包含所有资产包信息及其版本。在特殊场景下,游戏会下载xml文件,并从中下载100个assetbundles
WWW.LoadFromCacheOrDownload
。目的只是将所需的资产包存储到游戏缓存中。全部下载成功后就可以离线玩了,如果游戏需要加载assetbundle,那我就再调用一次WWW.LoadFromCacheOrDownload
,因为还在缓存中,所以可以离线玩。当然,我假设缓存仍然存在,只要我不明确清除缓存。困难的方法:我会将所有 100 个资产包压缩到 1 个 zip 文件。游戏将下载 xml 文件和 zip 文件。我将解压缩 zip,并将所有 100 个资产包放在移动存储(iOS 和 Android)中。所以在那之后,如果游戏需要加载资产,我只需调用
WWW.LoadFromCacheOrDownload
url 是使用file:///
指向移动存储路径的方案。
概括:
正常方式:
减号:我假设缓存还在,但如果缓存有问题,用户将无法玩游戏。
加:简单的实现,因为假设缓存会很好。
艰难的道路:
减号:嗯,我不知道这是否是减号,但是这一点,我必须实现未归档的 zip 文件并将它们存储在存储中。服务器端和应用程序端需要更多的实现。而且由于我是新手,我不知道这方面的最佳实践。
加:更健壮
那么哪个更好呢?或者有什么更好的推荐?