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