美文网首页unity
AssetBundle认知到运用(2)

AssetBundle认知到运用(2)

作者: JervieQin | 来源:发表于2018-04-23 23:33 被阅读63次

    前文已经介绍了什么是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);
                }
            }
        }
    
    

    分包策略

    • 将频繁更新的对象拆分为AssetBundle,与很少更改的对象分开
    • 对可能同时加载的对象进行分组。例如模型,纹理和动画
    • 如果您发现多个AssetBundle中的多个对象依赖于来自完全不同的AssetBundle的单个资产,请将依赖关系移动到单独的AssetBundle。如果多个AssetBundle引用其他AssetBundle中的同一组资产,则可能值得将这些依赖项拉入共享AssetBundle以减少重复。
    • 如果不可能同时加载两组对象,例如标准和高清属性,请确保它们位于自己的AssetBundles中。
    • 如果同时经常加载50%的捆绑包,请考虑拆分AssetBundle
    • 考虑组合小型(少于5到10个资产)但其内容经常同时加载的AssetBundle
    • 如果一组对象只是同一对象的不同版本,请考虑AssetBundle Variants
      参考:
      官方:用assetbundle manager + assetbundle browser实践
      siki视频
      AB API

    相关文章

      网友评论

        本文标题:AssetBundle认知到运用(2)

        本文链接:https://www.haomeiwen.com/subject/apyvkftx.html