无法加载AssetBundle,因为“它与较新版本的Unity运行时不兼容”

时间:2018-03-24 18:27:58

标签: c# unity3d assetbundle

我正在尝试从文件加载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.

我构建我的AssetBundle,如Unity wiki所示:

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也无法解决问题。

1 个答案:

答案 0 :(得分:2)

Unity文档在AssetBundles上已经过时了,因为Unity 2017他们引入了一个全新的资产捆绑系统,该系统更易于使用,并且可以使用改进的用户界面AssetBundle Browser

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

获取Assetbundle浏览器:

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

建立资产捆绑:

在这里,您将看到两个选项卡,“configure”和“Build”。通过将对象的预制件拖动到配置选项卡中,选择要构建的assetbundle。你会得到一个问题,询问你是想把它建成一个大包或多个单独的包,选择你喜欢的。

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

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

加载Assetbundle:

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

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

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