boxmoe_header_banner_img

菜就多练喵

文章导读

[Unity]热更新 02 AB包依赖


avatar
Ib_Mccf 2026年1月9日 16

AB包的依赖:一个资源身上用了别的AB包的资源,如果只加载自己的AB包,会丢失其他资源。需要加载所有依赖的AB包

手动加载依赖包

 //AB包的依赖:一个资源身上用了别的AB包的资源,如果只加载自己的AB包,会丢失其他资源。需要加载所有依赖的AB包
        //加载AB包,同名AB包不能重新加载,会报错
        AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/model");
        //加载依赖包
        AssetBundle ab2 = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/icon");
        //加载AB包的资源,指定资源类型
        GameObject obj = ab.LoadAsset("Cube", typeof(GameObject)) as GameObject;
        Instantiate(obj);

通过主包中的依赖信息文件加载依赖包

        //AB包的依赖:一个资源身上用了别的AB包的资源,如果只加载自己的AB包,会丢失其他资源。需要加载所有依赖的AB包
        //加载AB包,同名AB包不能重新加载,会报错
        AssetBundle ab = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/model");
        //加载主包获取依赖信息
        AssetBundle abMain = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/PC");
        //加载AB主包的依赖文件
        AssetBundleManifest manifest = abMain.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
        //从依赖文件中获取依赖的AB包名字
        string[] dependencies = manifest.GetAllDependencies("model");
        foreach (var dependency in dependencies)
        {
            AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/" + dependency);
        }
        //加载AB包的资源,指定资源类型
        GameObject obj = ab.LoadAsset("Cube", typeof(GameObject)) as GameObject;
        Instantiate(obj);
        //如传入True则卸载所有用AB加载的物体,否则只卸载AB包
        AssetBundle.UnloadAllAssetBundles(false);


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码