gpt4 book ai didi

unity3d - 哪种方式更好处理 AssetBundle 下载管理

转载 作者:行者123 更新时间:2023-12-04 04:44:45 26 4
gpt4 key购买 nike

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

我希望我的游戏可以离线玩之后 用户第一次下载了所有需要的 Assets 包。所以如果用户第一次玩或者下载我的游戏的更新版本,游戏会被强制进入特殊场景,下载所有需要的assetbundle,之后用户可以在没有互联网连接的情况下玩游戏。

我认为有两种方法可以下载这些 Assets 包:

  • 正常方式:我将所有 100 个 Assets 包放在我的服务器中,并放入 1 个 xml 文件,其中包含所有 Assets 包信息及其版本。特殊场景下,游戏会下载xml文件,然后通过WWW.LoadFromCacheOrDownload下载100个assetbundles .目的只是将所需的 Assets 包存储到游戏缓存中。全部下载成功后就可以离线玩了,如果游戏需要加载assetbundle,我就再打一次WWW.LoadFromCacheOrDownload ,由于还在缓存中,所以可以离线播放。当然,我假设缓存仍然存在,只要我不明确清除缓存。
  • 艰难之路:我会将所有 100 个 Assets 包压缩到 1 个 zip 文件。游戏将下载 xml 文件和 zip 文件。我将解压缩 zip,并将所有 100 个 Assets 包放在移动存储(iOS 和 Android)中。所以在那之后,如果游戏需要加载资源,我只需调用 WWW.LoadFromCacheOrDownload与 url 一起使用 file:///指向移动存储路径的方案。

  • 概括:

    正常方式:

    减号:我假设缓存还在,但如果缓存有问题,用户将无法玩游戏。

    加:简单的实现,因为假设缓存会很好。

    艰难之路:

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

    加:更健壮

    那么哪个更好呢?或者有什么更好的推荐?

    最佳答案

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

    这取决于您的情况,但我通常建议不要将它们打包成一个 zip 文件。主要是关于更新。在我们的案例中, Assets 需要一些更新,或者我们想稍后添加 Assets 。通过拥有一个包含版本控制数据的 XML 文件或数据库,更新设备上的数据是微不足道的。如果只有一个捆绑包发生变化,您只需要下载那个捆绑包。在我们的案例中,2MB 和 450MB 差别很大。

    关于unity3d - 哪种方式更好处理 AssetBundle 下载管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370616/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com