unity

AssetBundle认知到运用(2)

2018-04-23  本文已影响63人  JervieQin

前文已经介绍了什么是AssetBundle并且对设置AB有了一定的了解。接下来,我们通过实例来了解设置AB名,打包AB,测试AB的方法。这里我们用到AssetBundleBrowser来快速组建AB资源。

运用

你能学到什么?

  1. AssetBundleBrowser组织bundle资源
  2. 加载AB
  3. 分包策略

使用AssetBundle Browser组织AB结构

与上文不同,这里我们选择插件来提供一个可视化的AB组织方式。这也是unity官方推荐的一种方式。
首先,右键资源列表中右键创建新bundle。当然也可以先创建一个文件夹再创建一个bundle,这个看需求具体组织。也可以直接拖拽资源形成一个bundle。


创建新bundle

创建好bundle之后可以右键它有几个选项:删除,转变为变体,重命名,创建同级对象。如果选择转变为变体,那么bundle图标就会变成深灰色。创建好变体后,点击add child,可以创建具体的变体bundle。这里记住变体bundle中的资源名必须是一样的。

组织变体

AssetBundle Browser 支持资源直接拖拽。并且会在资源列表中即时显示警告信息。可以通过查看信息自己处理或者右键包自动处理。

等所有AB资源组织好后,在Build中配置打包信息并完成打包。 配置打包信息

最终我们能在更目录下找到打包文件:


根目录创建
值得一提的是:LZMA被第一次解压后,下次加载会变成LZ4,加载速度会更快。

编写脚本加载AB

主要分两种:一种是本地加载,还有一种是联网下载后加载。
本地加载的话,先通过 LoadFromFile
或者LoadFromMemoryAsync
来加载bundle,然后通过LoadAsset来加载资源。具体的加载可以这么写:

            string path = "AssetBundles/StandaloneWindows/" + assetBundleName;
            AssetBundle ab = AssetBundle.LoadFromFile (path);
            GameObject prefab = ab.LoadAsset<GameObject> (assetName);
            Instantiate (prefab);

另外一种是使用DownloadHandlerAssetBundle

IEnumerator Start () {
        {
            string url = "http://website.com/assetbundle";
            using (var uwr = new UnityWebRequest (url, UnityWebRequest.kHttpVerbGET)) {
                uwr.downloadHandler = new DownloadHandlerAssetBundle (url, 0);
                yield return uwr.SendWebRequest ();
                AssetBundle bundle = DownloadHandlerAssetBundle.GetContent (uwr);
            }
        }
    }

分包策略

上一篇 下一篇

猜你喜欢

热点阅读