Unity3d 如何优化内存
2017-04-01 17:46
176 查看
前言:一提到内存这个东西我相信很多做技术的都头大,我也不例外,如何平衡内存值和手游的表现真的是需要去反反复复去琢磨的。下面记录下我们游戏的内存优化以及一些技巧
首先我们需要一个目标,也就是我们需要把我们游戏优化到什么程度算是比较能接受的?
这个问题要看游戏类型把,比如我们这种3d arpg的游戏还是带水墨风格的就会非常吃力,因为很多水墨边都是半透明的资源。(换句话说我们这个能优化下来你的也一定可以做到)。我们综合了下游戏的表现和我们的硬件水平我们把内存值定在了250M 可用内存在500M的样子(王者荣耀差不多是这个数值)。我相信这个值目前的百元机随便达到了。
常规的技巧:
你关闭了图片的mipmap 了吗? 这个东西是图片映射的时候需要用到的,但是我们的ui一般用不到。
你关闭了图片的write/read 功能了吗? 这个东西一般情况也用不到,因为你一般情况不会通过代码去重组图片
你的动作有勾选Optimize GameObjects 吗? 建议你关闭把,这个会很大程度印象你动画骨骼刷新,当然你要注意别把你的挂点也给关闭了。(轻松写个小插件做到)
你的模型有勾选write/read功能吗? 有关闭表情吗 ? 请关闭把,这些东西都不要的
你的其他贴图的格式都正确设置了吗? 请按照不同类型的图片格式分包设置把,不然你的内存会很容易爆掉了。
上面都是一些常规的技巧,也就是我们所说的一般人都会的,如果你不会那么请对着做下,对你的内存会有非常大的影响。下面我要说说我们游戏中遇到的最大的问题。
第一个:Assetbundle的错误理解导致seriazedfile 值非常大。每个Assetbundle在加载的时候都会生成一个几十k的镜像内存,如果你不即使清理掉这部分你的内存就会非常大(unload(false))
第二个:我们游戏逻辑的bug,一般请看我相信我们都会有pool 这个东西,我们的也不例外搞了开源的pool 进行特效的缓存,而最后发现pool这个东西是根据名字来的,而不是更具instance id 来进行区别这个对象,所以导致pool 没有发挥出他应该有的功能。内存无限放大
说完了上面的问题,其实最重要的是我们如何来定位问题,如何找到对应的问题的原因,其实也没有特别的办法,请一定使用手机端的profiler功能,如果你非要使用电脑端来查看内存使用那么我只能说你在白忙活,电脑端统计得毫无卵用~具体如何使用请翻阅我之前的blog。
首先我们需要一个目标,也就是我们需要把我们游戏优化到什么程度算是比较能接受的?
这个问题要看游戏类型把,比如我们这种3d arpg的游戏还是带水墨风格的就会非常吃力,因为很多水墨边都是半透明的资源。(换句话说我们这个能优化下来你的也一定可以做到)。我们综合了下游戏的表现和我们的硬件水平我们把内存值定在了250M 可用内存在500M的样子(王者荣耀差不多是这个数值)。我相信这个值目前的百元机随便达到了。
常规的技巧:
你关闭了图片的mipmap 了吗? 这个东西是图片映射的时候需要用到的,但是我们的ui一般用不到。
你关闭了图片的write/read 功能了吗? 这个东西一般情况也用不到,因为你一般情况不会通过代码去重组图片
你的动作有勾选Optimize GameObjects 吗? 建议你关闭把,这个会很大程度印象你动画骨骼刷新,当然你要注意别把你的挂点也给关闭了。(轻松写个小插件做到)
你的模型有勾选write/read功能吗? 有关闭表情吗 ? 请关闭把,这些东西都不要的
你的其他贴图的格式都正确设置了吗? 请按照不同类型的图片格式分包设置把,不然你的内存会很容易爆掉了。
上面都是一些常规的技巧,也就是我们所说的一般人都会的,如果你不会那么请对着做下,对你的内存会有非常大的影响。下面我要说说我们游戏中遇到的最大的问题。
第一个:Assetbundle的错误理解导致seriazedfile 值非常大。每个Assetbundle在加载的时候都会生成一个几十k的镜像内存,如果你不即使清理掉这部分你的内存就会非常大(unload(false))
第二个:我们游戏逻辑的bug,一般请看我相信我们都会有pool 这个东西,我们的也不例外搞了开源的pool 进行特效的缓存,而最后发现pool这个东西是根据名字来的,而不是更具instance id 来进行区别这个对象,所以导致pool 没有发挥出他应该有的功能。内存无限放大
说完了上面的问题,其实最重要的是我们如何来定位问题,如何找到对应的问题的原因,其实也没有特别的办法,请一定使用手机端的profiler功能,如果你非要使用电脑端来查看内存使用那么我只能说你在白忙活,电脑端统计得毫无卵用~具体如何使用请翻阅我之前的blog。
相关文章推荐
- (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
- 【Unity3D游戏开发】性能优化之Texture图片空间和内存占用分析(三七)
- 如何优化tomcat配置(从内存、并发、缓存4个方面)优化
- 如何对Android内存缓存进行优化
- 【Himi转载推荐之一】如何优化cocos2d/x程序的内存使用和程序大小
- Unity3D 优化 5 (AssetBundle的SerializedFile内存)
- 如何优化app的运行内存占用
- 如何优化tomcat配置(从内存、并发、缓存3个方面)优化
- (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
- Android Bitmap那些事之如何优化内存
- 如何优化app的运行内存占用
- Android Bitmap那些事之如何优化内存
- (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能
- Unity3D游戏内存瘦身 UI优化是关键
- (译)如何优化cocos2d程序的内存使用和程序大小:第二部分(完)
- Unity3D对于内存的管理与优化
- 如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术。
- (译)如何优化cocos2d程序的内存使用和程序大小:第一部分
- Cocos2d-x 如何优化内存使用