美文网首页
二、资源管理4:ab包卸载

二、资源管理4:ab包卸载

作者: GameObjectLgy | 来源:发表于2023-07-31 17:18 被阅读0次

    虽然是ab包的卸载,但是这里把资源释放相关的几个类型和方式都总结下。

    1、 释放实例化部分的内存资源

    这类资源有个特点,就是都是使用Instaniate进行实例化出来。
    (1)GameObject类,在程序运行时可以动态地加载和销毁释放(Destory),Destory由Unity本身直接管理,无法控制其销毁具体时机。
    (2)非GameObject类的引用
    Texture引用,shader引用,材质引用等。如果是单独实例化出来了,则属于非生命周期管理的内存,必须要手动进行卸载,用Destory(Texture)方式进行卸载。

    2、释放虚拟机内存中的ab包资源所占用的内存

    这类资源有个特点,就是都是使用AssetBundle.LoadAsset从ab包资源内存镜像创建出来。
    Resources.UnloadUnusedAssets();//卸载未占用的asset资源
    System.GC.Collect();//回收内存

    3、释放运行内存中的ab包资源内存镜像内存

    这类资源有个特点,是从硬盘或网络中下载后了ab包(此时还是压缩文件)后,使用AssetBundle.LoadFromFile创建出来。
    使用AssetBundle.UnloadAllAssetBundles或AssetBundle.Unload进行卸载。

    4、在移动环境下unity释放资源注意点

    通常情况下做了场景切换后,上一个场景的所有东西都会进行一个卸载,这时候通常也可以进行一些内存类的释放操作,还有一类需要注意点的是。有些东西是DontDestory的,这时候如果是退出整个程序的操作则需要进行具体的置空,而且一些静态类也需要进行销毁。尤其是IOS的某个进程里有内置unity的情况,IOS调用Unity退出的时候要做这类操作,因为IOS这边是单进程的。安卓调用Unity退出,是直接杀死进程,调用的是Application.quit。

    image.png

    相关文章

      网友评论

          本文标题:二、资源管理4:ab包卸载

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