关于Resources.load和实例化与内存的关系:1.加载,单纯的Resources.load后消耗的内存很低,可能只是基础的引用预载、当对象被实例化后才会占用大量内存,当实例化多个对象后和实例化一个相差不大,可能后边实例的对象引用了第一个。2.卸载,单纯的把所有实例的obj给destroy后,内存不会释放,但是再次实例也不会耗内存,若Object b = Resources.Load("Canvas");这样写,还需要把b=null后再调用Resources.UnloadUnusedAssets()后整个内存才会被释放。///最好不要给Resources.Load("Canvas");单独定义变量,如果忘记清除变量引用后,内存就释放不了、清除引用是指Resources.Load的引用而不是实例化对象的引用。所以建议GameObject a = GameObject.Instantiate (Resources.Load("Canvas") as GameObject这样直接写,然后destroy 这个实例对象后,调用unload 就可以释放内存。 关于assetbundle的加载和实例化与内存的关系:1.对于WWW.LoadFromCacheOrDownload方式加载,单纯的load进来也不耗什么内存,实例化后会耗很多内存,destroy实例对象后,不释放内存。调用Resources.UnloadUnusedAssets()或www.assetBundle.Unload (true);才能完全释放Unload (false)后乎没有释放或者可能释放量极小。结论:建议使用assetbundle.Unload (false),实例对象销毁后需要调用Resources.UnloadUnusedAssets()2.对于WWW www = new WWW()方式加载,单纯的load需要消耗一份内存,实例化后再消耗一份内存。实例destroy后需要调用Resources.UnloadUnusedAssets()或www.assetBundle.Unload (true);才能释放实例对象内存,不能释放load的内存。Unload (false)后乎没有释放或者可能释放量极小。结论:一般最好不要使用该方法加载,会消耗双倍内存,可以用Resources.UnloadUnusedAssets()回收实例对象内存,本身load的内存无法手动回收。3.对于AssetBundle.CreateFromFile():应该和1的情况类。卸载资源只要引用没有了调用unload是有效的。
推荐整理分享资源加载卸载与内存的关系(资源加载中是什么原因),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:资源加载器,资源加载错误怎么办,资源加载错误怎么办,资源加载卸载与重装,卸载时加载资源文件失败,资源加载失败,请重新安装程序是为什么,资源加载卸载与重装,资源加载卸载与安装,内容如对您有帮助,希望把文章链接给更多的朋友!
Kinect结合Unity开发(一) 因为对Unity比较熟悉,所以一开始想着就是用Unity结合Kinect来进行游戏开发,而不是用Kinect的SDK强行撸一个出来,再说我也不会啊。然后就是上网各种找
使用BMFont+NGUI利用图片制作自定义字体 在游戏开发过程中,我们大多数时候都需要显示游戏计时和分数等,而这些数字如果用普通的字体来显示又会显得不太好看,于是我们产生了用图片来
【猫猫的Unity Shader之旅】之扭曲模型 之前我们介绍的一些Shader效果都是在surf函数中做文章,也就是对渲染过程中的片段进行操作,实现的是模型表面的一些显示效果。然而,UnityShader还提