【问题标题】:Cannot load AssetBundle because "it is not compatible with the newer version of the Unity runtime"无法加载 AssetBundle,因为“它与较新版本的 Unity 运行时不兼容”
【发布时间】:2018-03-24 18:27:57
【问题描述】:

我正在尝试从文件加载 AssetBundle,但出现以下错误: The AssetBundle 'path\to\file' could not be loaded because it is not compatible with this newer version of the Unity runtime. Rebuild the AssetBundle to fix this error.

我按照 Unity wiki 所示构建我的 AssetBundle:

using UnityEditor;

namespace Editor
{
    public class CreateAssetBundles
    {
        [MenuItem("Assets/Build AssetBundles")]
        private static void BuildAllAssetBundles()
        {
            BuildPipeline.BuildAssetBundles("Assets/AssetBundles",
                BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
        }
    }
}

这会生成一个外观正确的 AssetBundle,清单文件看起来也很好。

我使用以下代码加载 AssetBundle:

var assetBundle = AssetBundle.LoadFromFile(path);

AssetBundle 和游戏均使用相同版本的 Unity 构建,版本 2017.3.1f1(64 位)。我也尝试使用最新的可用 beta 版本构建这两个版本,但这并没有解决问题。

将 BuildTarget 更改为 BuildTarget.StandaloneWindows64 也不能解决问题。

【问题讨论】:

    标签: c# unity3d assetbundle


    【解决方案1】:

    Unity 文档在 AssetBundles 上有点过时,自 Unity 2017 以来,他们引入了一个全新的 AssetBundle 系统,该系统更易于使用,并且与称为 AssetBundle Browser 的改进 UI 配合使用

    我自己在使用assetbundles 从Unity 5.x 切换到2017.x 时遇到了问题,它实际上需要我使用新的assetbundle 系统,并通过它构建/加载以使它们再次工作。

    获取 Assetbundle 浏览器:

    • 从 Unity 的 GitHub 下载 AssetBundle 浏览器
    • 将下载的文件添加到您的 Unity 项目中
    • 转到窗口
    • AssetBundle 浏览器

    构建资产包:

    在这里您将看到两个选项卡,“配置”和“构建”。通过将对象的预制件拖到配置选项卡中来选择要构建的资产包。您会收到一个问题,询问您是要将其构建为一个大捆绑包还是多个单独的捆绑包,请选择您喜欢的那个。

    如果多个捆绑包共享相同的资源,浏览器也会发出警告,并建议制作一个包含所有共享资源的单独捆绑包,具体取决于捆绑包的数量和大小,这样可以节省大量空间。

    然后,如果您转到“构建选项卡”,您可以选择要构建的平台和输出路径,以及一些其他选项,例如压缩类型。然后您所要做的就是单击“构建”以构建与 unity 2017.x 兼容的新资产包

    加载 Assetbundle:

    从文件加载assetbundle就像使用以下代码一样简单:AssetBundle myAssetBundle = AssetBundle.LoadFromFile(path); 您还可以从内存中加载资产包(以字节为单位)或直接从流中加载。

    新 AssetBundle 浏览器的另一个好处是您可以根据需要对其进行自定义所有文件都可以在 /Assets/Editor/AssetBundleBrowser/ 中找到。例如,我包含了在构建完成后自动将所有包上传到 FTP 的功能。

    编辑:Unity AssetBundle 浏览器工具适用于 5.6 或更高版本。

    【讨论】:

    • 感谢您的冗长解释,如果可以的话,我会投票两次。我不知道 AssetBundle 浏览器,它看起来非常整洁,所以感谢您提醒我注意,但是即使使用 AssetBundle 浏览器构建,我仍然会遇到同样的错误。
    • 这很奇怪,您最近是否从其他版本的 Unity 升级?如果是这样,这是哪个版本。您是否在任何其他版本的 Unity 上尝试过它?也只是为了进行完整性检查,您是在运行 Windows 的机器上开发吗?
    • 我尝试使用 Unity 2017.3.1f1(64 位,个人版)和 Unity 2018.1.0b12(64 位,个人版)构建游戏和 AssetBundle(只是为了澄清:我使用了构建游戏和 AssetBundle 的版本相同,但我尝试了 2 个不同的版本)。我正在运行 Windows 的机器上开发和运行游戏
    • 我个人没用过2017.3和2018,所以不知道里面的assetbundles有没有变化。目前我运行 2017.2.1f1,这对我来说是稳定的资产包。资产包是否在统一播放模式下工作,并且仅在您构建游戏时停止工作?还是它们在统一播放模式下也不起作用?
    • AssetBundle 在 Unity 的播放模式下工作正常,但在构建游戏时却不行。应该注意的是,为了在游戏模式下进行测试,我将 AssetBundle 添加到 Assets 文件夹中,但对于实际构建游戏,我是从计算机上其他位置的文件中加载它。
    猜你喜欢
    • 1970-01-01
    • 2021-05-02
    • 2014-06-11
    • 1970-01-01
    • 2010-12-08
    • 2016-05-08
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多