解决切换场景时NGUI图集资源未释放的问题

使用unity3d编辑器,在切换场景的时候,NGUI的图集没有释放造成内存不足游戏闪退的问题。

默认情况下,unity3d切换场景之后会释放不用的内存,即内部会调用Resources.UnloadUnusedAssets从而释放未被引用的资源。

问题是,从编辑器的Profiler查看内存使用情况,发现NGUI的图集并没有被释放。

解决办法:

1.UnloadUnusedAssets 只会在资源没有引用的时候才会有效,包括脚本中静态变量的引用。我们在关闭任何界面的时候,将界面静态变量的引用设置为null。

2.不要在编辑器中观察内存使用情况。有些编辑器相关代码会引用资源,从而让资源不能释放。例如,如果你从Project目录打开了某个Profab的子对象,那么这个Profab会被编辑器加载到内存(如果编辑器不加载这个对象,编辑器怎么可能知道这个对象有哪些子对象)。也就是说,我们可以将游戏打包成windows版本,再观察游戏的内存情况。

3.老版本的NGUI内部可能会有静态变量对资源 的引用,一般升级NGUI会解决这些问题。

成功解决游戏过程中闪退的问题。

时间: 2024-09-28 15:45:47

解决切换场景时NGUI图集资源未释放的问题的相关文章

(转载)解决切换Fragment时布局重新实例化

解决切换Fragment时布局重新实例化 作者 instanceof 关注 2015.12.30 17:25* 字数 628 阅读 7616评论 17喜欢 23 关于Fragment 在这简单说一下Fragment,Fragment是Android 3.0以后才出现的,是为了适应不同的手机屏幕.平板和电视机的屏幕的.另外还有一个重要的原因,因为Activity的创建到销毁需要费时费内存,大量的Activity之间的跳转会造成堆栈饱满,引发程序崩溃或者无响应.为了解决这个问题,Fragment就产

unity在切换场景时,场景灯光变暗的问题

当你有多个场景使,需要切换场景,当你切换到下一个场景时出现了场景灯光变暗的效果.然后操作是 window--lighting--取消auto后点击build就可以了 主要出现这个问题的原因是:当前你的灯光是实时光照 在当前场景时已经渲染完成.但重新加载的时候没有渲染.先把渲染灯光烘培一下.保存起来就没事了.

cocos2dx 中切换场景内存占用过高的处理

cocos2dx 中切换场景内存占用过高的处理 1.运行场景: CCScene *pScene = HelloWorld::scene(); pDirector->runWithScene(pScene); 2.替换场景: (1) CCScene *pScene=SceneTestScene::scene(); CCDirector::sharedDirector()->replaceScene(pScene); (2) CCScene *pScene=SceneTestScene::scen

[NGUI]NGUI图集Atlas制作

1,在PS里面设计好要做的UI,然后切片成很多个png的图片(这属于美工的活啦,所以会描述的的比较简单点哈)2,在Unity中 Project下新建一个Folder,F2重命名为ResUI,以后就用来存放所有的UI,在ResUI里面重新新建一个Folder,我们这次以开始界面为例,因此F2重命名这个Folder为StartUI,这个StartUI用来存储关于开始界面的所有资源.[NGUI]NGUI图集Atlas制作简介" border="0" alt="转载 [NG

切换场景灯光变黑问题解决

编辑器在当前场景时,它的灯光是已经渲染好了,但重新加载的时候灯光没有进行渲染 解决方法如下: Window>>lighting>>Scene面板>>右下角build按钮前,取消勾选auto,这时候是没有烘焙灯光的情形,重新加载场景后不再会变暗. 如果需要烘培灯光,则点击build按钮即可,这时候将保存光照贴图信息,重新加载后也不会再变暗. 打开第一个场景,Window-Lighting-Setting-Scene,右下角Auto Generate去掉对勾,点击Gener

FragmentTab切换Fragment时避免重复加载UI

原文地址:破晓博客 ? [原创]FragmentTab切换Fragment时避免重复加载UI 使用FragmentTa时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态. 测试于:Android2.3+ 解决办法:在Fragment onCreateView方法中缓存View private View rootView = null;// 缓存Fragment view @Override public

制作NGUI图集

导入NGUI后,右击在弹出窗中如图选择,打开Atlas Maker 到Project窗口中添加需要制作成图集的图片资源 选中要添加的图集资源,点击add/Update 重复以上操作即可完成需要制作的图集 U3D开发交流群: 312315390,欢迎加入交流公共学习进步 制作NGUI图集,布布扣,bubuko.com

FragmentTabHost切换Fragment时避免重复加载UI

使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态. 解决办法:在Fragment onCreateView方法中缓存View 1 private View rootView;//缓存Fragment view 2 3 @Override 4 public View onCreateView(LayoutInflater inflater, ViewGroup conta

关于在打包Jar文件时遇到的资源路径问题(二)

在关于<关于在打包Jar文件时遇到的资源路径问题(一)>中,以及描述了当资源与可执行JAr分离时的资源路径代码的编写问题,后来想了想,为什么将<Java核心技术卷一>中的程序10-1即ResourceTest的Jar文件放在任何地方都可以执行呢? 图:将原本一起放入目录中的Jar放到桌面上,点击依然能执行 于是我将这个Jar包进行解压,发现在这个包中依然有资源,这就说明了这个包在脱离了原先目录而执行时,依据的资源路径应该是在自己的Jar包中.(至于这个Jar在原先目录时是根据自己包