AssetBundle Browser(AB 包) 介绍

文章目录

    • 简介
    • 下面介绍一下在U3D中加载AB包时的一些操作

简介

AssetBundle-browser是一款用于处理AssetBundle的工具

首先在 Window->PackageManager里找到AssetBundle 安装
在这里插入图片描述

安装后是这样的一个面板
AssetBundle Browser(AB 包) 介绍_第1张图片

  1. 是所有打包的模型

  2. 打包设置面板
    Build Target:选择发布的平台

    Output Path:输出路径

    Clear Folders:构建之前清空文件夹

    Copy to StreamingAssets:拷贝至StreamingAssets文件夹

    Compression:选择压缩格式

    点击Build即可对当前Browser中所有的bundle进行打包,选择路径,即 可在该路径下看到生成的资源文件。
    AssetBundle Browser(AB 包) 介绍_第2张图片1.一般存储AB包时都要把这两个勾选上
    2.拷贝至StreamingAssets这个文件夹中,在加载AB包资源时可以很方便的加载

下面介绍一下在U3D中加载AB包时的一些操作

private void Start()
    {
        //  同步加载
        SyncLoadAB("model", "Cube");
        //  异步加载
        StartCoroutine(AsyncLoadABRes("model2", "Sphere"));
    }
    /// 
    /// 同步加载
    /// 
    private void SyncLoadAB(string ABName, string resName)
    {    
        //First  加载 AB包   同一AB包不能同时加载
        AssetBundle ab = AssetBundle.LoadFromFile
        (Application.streamingAssetsPath + "/"+ABName);
        //Second 加载 AB包中的资源
        //宜 使用泛型加载
        GameObject obj = ab.LoadAsset<GameObject>("resName");
        GameObject obj2 = ab.LoadAsset
        ("resName", typeof(GameObject)) as GameObject;
        Instantiate(obj2);
        // 卸载AB 包   参数true or false 决定了加载了的资源是否卸载
        //所有AB包
        //AssetBundle.UnloadAllAssetBundles(true);
        //单个AB 包
        ab.Unload(true);
    }

    /// 
    /// 异步加载AB包
    /// 
    IEnumerator AsyncLoadABRes(string ABName,string resName)
    {
        
        AssetBundleCreateRequest ab= AssetBundle.LoadFromFileAsync
        (Application.streamingAssetsPath + "/" + ABName);
        yield return ab;
        //异步加载资源
        AssetBundleRequest res= ab.assetBundle.LoadAssetAsync
        <GameObject>(resName);
        Instantiate(res.asset,new Vector3(5,0,0),Quaternion.identity);
        yield return res;
    }
    /*          AB包的依赖性         */
    /// 
    /// 如果加载一个物体,加载时它的材质不和物体在一个包中,
    /// 并且材质材质所在的包也没有被加载,那么该物体的材质球将会丢失。
    /// 简单来说,就是要加载材质所在的包
    /// 
    private void Depend()
    {
        //加载主包
        AssetBundle abMain = AssetBundle.LoadFromFile
            (Application.streamingAssetsPath + "/PC");
        // 加载主包中的固定文件
        AssetBundleManifest abManifest = abMain.LoadAsset
            <AssetBundleManifest>("AssetBundleManifest");
        //从固定文件中得到依赖信息  (依赖包名称)
        string[] str = abManifest.GetAllDependencies("model");

    }

大概就这些了,以后学到了再补充吧,欢迎更正

你可能感兴趣的:(unity)