Unity热更新——AB包的基本操作

简介: Unity热更新——AB包的基本操作

第一步加载AB包

AssetBundle.LoadFromFile 从本地加载

以编辑器为使用案例,AB包的资源拷贝到了 streamingAssetsPath 的目录下,加载AB包资源操作如下。如果是其他平台的,则只需要保证AB包资源的正式路径正确即可

string path = Application.streamingAssetsPath + "/" + "common/main.ab";
AssetBundle ab = AssetBundle.LoadFromFile(path);
AssetBundle.LoadFromFileAsync 异步加载
    void Start()
    {
        StartCoroutine(LoadABPackRes());
    }
 
    IEnumerator LoadABPackRes()
    {

以编辑器为使用案例,AB包的资源拷贝到了streamingAssetsPath 的目录下,加载AB包资源操作如下。如果是其他平台的,则只需要保证AB包资源的正式路径正确即可。

string path = Application.streamingAssetsPath + "/" + "common/main.ab";
        AssetBundleCreateRequest abPack = AssetBundle.LoadFromFileAsync(path);
        yield return abPack;
        // TODD 操作使用已加载的AB包资源 abPack
    }

第二步加载AB包中的资源

只是用名字加载会出现同名不同类型资源分不清,所以建议大家用泛型加载或者是Type指定类型

Gameobject obj = ab.LoadAsset<Gameobject>("cube" );
Gameobject obj = ab.LoadAsset( "cube", typeof(Gameobject)) as Gameobject;
Instantiate(obj);

AB包不能够重复加载否则报错

AssetBundle ab2 = AssetBundle.LoadFromFile(Application.streamingAssetsPath + " /"” +"model");

加载—个圆

Gameobject obj2 = ab.LoadAsset("sphere" , typeof(Gameobject)) as Gameobject;Instantiate(obj2);

异步加载—>协程

StartCoroutine( LoadABRes ( "head", "23_11100001"));

第一步加载AB包

AssetBundleCreateRequest abcr = AssetBundle.LoadFromFileAsync(Application.streamingAssetsPath + " /"+ ABName);
yield return abcr;

第二步加载资源

AssetBundleRequest abq = abcr.assetBundle.LoadAssetAsync(resName,typeof(Sprite));
yield return abq;
//abq.asset as sprite;
img.sprite = abq.asset as sprite;

第三步 卸载AB包中的资源

AssetBundle.Unload 卸载当前包资源

以编辑器为使用案例,AB包的资源拷贝到了 streamingAssetsPath 的目录下,加载AB包资源操作如下

如果是其他平台的,则只需要保证AB包资源的正式路径正确即可

string path = Application.streamingAssetsPath + "/" + "common/main.ab";
AssetBundle abPack = AssetBundle.LoadFromFile(path);
    

卸载当前已经已加载abPack的AB包, 参数true表示卸载AB包时,同时卸载掉所有的资源引用, false则只卸载AB包,不卸载掉当前已经使用的资源

abPack .Unload(true);
AssetBundle.UnloadAllAssetBundles 卸载所有AB包资源

卸载所有已加载的AB包, 参数true表示卸载AB包时,同时卸载掉所有的资源引用, false则只卸载AB包,不卸载掉当前已经使用的资源

AssetBundle.UnloadAllAssetBundles(true);
目录
相关文章
|
存储 缓存 JSON
Unity资源热更新知识梳理及工作流介绍
研究了大半年的热更,才做出了一套相对完善的热更架构。不得不说,这块的知识点还是多而杂的,值得专门开篇博文来记录梳理。
2260 0
|
4月前
|
算法 安全 C#
Unity——热更新浅析
Unity——热更新浅析
|
4月前
|
存储 图形学 Android开发
Unity——资产包(Asset Bundles)
Unity——资产包(Asset Bundles)
|
10月前
|
编译器 图形学 Windows
【unity细节】中文乱码和老包升级的情况
【unity细节】中文乱码和老包升级的情况
114 0
|
图形学
Unity热更新——lua语言
Unity热更新——lua语言
96 0
|
图形学 Windows
Unity热更新——AB包
Unity热更新——AB包
249 0
|
图形学 Android开发
Unity粒子特效系列-龙卷风预制体做好了,unitypackage包直接用!
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1963 1
|
XML 前端开发 图形学
Unity与安卓交互 之 ✨ 在Android Studio中写代码导出aar包,在Unity中使用交互(小白完整篇)
在Android Studio中写代码导出aar包,在Unity中交互调用(小白完整篇) AndroidStudio中的操作步骤: 首先,打开AndroidStudio新建一个工程,版本不同,所以操作的界面跟步骤可能不太一样,但是核心就是包名罢了,其他的一律默认Next带过就行
Unity与安卓交互 之 ✨ 在Android Studio中写代码导出aar包,在Unity中使用交互(小白完整篇)
|
Java 测试技术 C#
Unity 3D与Android Studio安卓交互之-导出jar包
u3d与安卓 jar 包交互 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— ...
3662 0
|
图形学
Unity 减小包体apk大小技巧
创建一个新的工程,默认场景打包的包体如下 更改Other Settings中的Device Filter,但是弊端就是牺牲了机器的兼容性 更改Device Filter选项为ARMv7后的包体如下: ...
1922 0