unity 资源内存管理

    资源加载和初始化的方法:

   1.AssetBundle.CreateFrom.....:创建一个AssetBundle内存镜像,注意同一个assetBundle文件在没有Unload之前不能再次被使用,只能在PC/Mac Standalone程序中使用。
   2.AssetBundle.Load(name): 从AssetBundle读取一个指定名称的Asset并生成Asset内存对象,如果多次Load同名对象,除第一次外都只会返回已经生成的Asset 对象,也就是说多次Load一个Asset并不会生成多个副本(singleton)。
   3.Resources.Load(path&name):同上,只是从默认的位置resources加载。

   4.Instantiate(object):Clone 一个object的完整结构,包括其所有Component和子物体,浅Copy,并不复制所有引用类型。

    释放的方法:
    1.Destroy: 主要用于销毁克隆对象,也可以用于场景内的静态物体,不会自动释放该对象的所有引用。虽然也可以用于Asset,但是概念不一样要小心,如果用于销毁从文 件加载的Asset对象会销毁相应的资源文件!但是如果销毁的Asset是Copy的或者用脚本动态生成的,只会销毁内存对象。
    2.AssetBundle.Unload(false):释放AssetBundle文件内存镜像
    3.AssetBundle.Unload(true):释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存对象
    4.Reources.UnloadAsset(Object):显式的释放已加载的Asset对象,只能卸载磁盘文件加载的Asset对象
    5.Resources.UnloadUnusedAssets:用于释放所有没有引用的Asset对象,Object obj = Resources.Load("MyPrefab");obj需要置为null,引用本身需要Destory()
    GC.Collect()强制垃圾收集器立即释放内存 Unity的GC功能不算好,没把握的时候就强制调用一下

原文地址:https://www.cnblogs.com/sevenmoons/p/4204099.html