Unity性能优化(主要是内存的优化)
来源:互联网 发布:跳蛋淘宝 编辑:程序博客网 时间:2024/05/22 03:47
Unity手游的性能优化过程更像是一门时空转换的艺术, 持续在CPU和内存之间取得一个平衡。空间不足时则需要释放一些无用数据,以获得更优的空间使用率;时间太长时就需要降低不必要的函数开销。以下是腾讯游戏在Unity游戏开发过程中内存和性能优化的一系列解决策略和方法。
贴图:
l 控制贴图大小,尽量不要超过1024 x1024;
l 尽量使用2的n次幂大小的贴图,否则GfxDriver里会有2份贴图;
l 尽量使用压缩格式减小贴图大小;
l 若干种贴图合并技术;
l 去除多余的alpha通道;
l 不同设备使用不同的纹理贴图,分层显示;
模型:
l 尽量控制模型的面数,小于1500会比较合适;
l 不同设备使用不同的模型面数;
l 尽量保持在30根骨骼内;
l 一个网格不要超过3个material;
动画:
l N种动画压缩方法;
l 尽量减少骨骼数量;
声音:
l 采用压缩MP3 和 wav;
资源方面的优化:
l 使用 Resource.Load 方法在需要的时候再读取资源;
l 各种资源在使用完成后,尽快用Resource.UnloadAsset和UnloadUnusedAsset卸载掉;
l 灵活运用AssetBundle的Load和Unload方法动态加载资源,避免主要场景内的初始化内存占用过高;(实现起来真的很难…)
l 采用www加载了AssetBundle后,要用www.Dispose 及时释放;
l 在关卡内谨慎使用DontDestroyOnLoad,被标注的资源会常驻内存;
代码的优化:
l 尽量避免代码中的任何字符串连接,因为这会给GC带来太多垃圾;
l 用简单的“for”循环代替“foreach”循环;
l 为所有游戏内的动态物体使用内存对象池,可以减少系统开销和内存碎片,复用对象实例,构建自己的内存管理模式,减少Instantiate和Destory;
l 尽量不使用LINQ命令,因为它们一般会分配中间缓器,而这很容易生成垃圾内存;
l 将引用本地缓存到元件中会减少每次在一个游戏对象中使用 “GetComponent” 获取一个元件引用的需求;
l 减少角色控制器移动命令的调用。移动角色控制器会同步发生,每次调用都会耗损较大的性能;
l 最小化碰撞检测请求(例如raycasts和sphere checks),尽量从每次检查中获得更多信息;
l AI逻辑通常会生成大量物理查询,建议让AI更新循环设置低于图像更新循环,以减少CPU负荷;
l 要尽量减少Unity回调函数,哪怕是空函数也不要留着;(例如空的Update、FixedUpdate函数)
l 尽量少使用FindObjectsOfType函数,这个函数非常慢,尽量少用且一定不要在Update里调用;
l 千万一定要控制mono堆内存的大小;
转自:http://blog.csdn.net/wetest_tencent/article/details/51784782
- Unity性能优化(主要是内存的优化)
- unity内存和性能优化
- Unity的内存优化
- Unity内存的优化
- Unity的内存优化
- 腾讯是如何做Unity手游性能优化的
- 内存性能的优化
- 【Unity优化】内存优化
- [Unity 优化]内存优化
- Unity内存优化(-)托管堆ManagedHeap的优化
- Unity性能优化(CPU)
- Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化)
- Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化)
- Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化)
- Unity5.0新特性------unity内部:内存 和 性能(以及Unity5的升级优化)
- unity游戏性能优化之简单内存优化
- 谈谈canvas的性能优化(主要讲缓存问题)
- 上线系统性能优化的主要过程
- C# 中的访问修饰符和声明修饰符
- Unity Shader(ShaderLab)着色器简介
- win10安装oracle 11g 时出现INS-13001环境不满足最低要求错误
- Unity5.4 AssetBundle的完整项目源码(包括打包和加载)
- Unity游戏Mono内存管理与泄漏
- Unity性能优化(主要是内存的优化)
- 32.检验验证码以及完成注册(用到了将用户的信息存储到数据库当中)
- Lua的协程和协程库讲解
- 关于Unity5.x版本AssetBundle打包Shader的问题
- cesuim原理篇(一)--渲染调度
- VC++利用微软mstscax.dll控件集成远程桌面
- 第九周项目2-对称矩阵压缩存储的实现与应用
- JAVA写入XML文件
- Error:(1, 0) Plugin with id 'com.android.application' not found. 解决方案