Unity性能优化的N种武器
贴图:
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 最小化碰撞检测请求(例如ray casts和sphere checks),尽量从每次检查中获得更多信息;
l AI逻辑通常会生成大量物理查询,建议让AI更新循环设置低于图像更新循环,以减少CPU负荷;
l 要尽量减少Unity回调函数,哪怕是空函数也不要留着;(例如空的Update、FixedUpdate函数)
l 尽量少使用FindObjectsOfType函数,这个函数非常慢,尽量少用且一定不要在Update里调用;
l 千万一定要控制mono堆内存的大小;
摘自《腾讯大咖说:腾讯是如何做Unity手游性能优化的》
原文地址:http://wetest.qq.com/lab/view/108.html
Unity性能优化的N种武器的更多相关文章
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...
- Unity 性能优化(力荐)
开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. ...
- Unity性能优化(1)-官方教程The Profiler window翻译
本文是Unity官方教程,性能优化系列的第一篇<The Profiler window>的简单翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻 ...
- Web 性能优化:21 种优化 CSS 和加快网站速度的方法
这是 Web 性能优化的第 4 篇,上一篇在下面看点击查看: Web 性能优化:使用 Webpack 分离数据的正确方法 Web 性能优化:图片优化让网站大小减少 62% Web 性能优化:缓存 Re ...
- JAVA性能优化的五种方式
一,JAVA性能优化之设计优化 设计优化处于性能优化手段的上层.它往往须要在软件开发之前进行.在软件开发之前,系统架构师应该就评估系统可能存在的各种潜在问题和技术难点,并给出合理的设计方案,因为软件设 ...
- Unity性能优化专题---腾讯牛人分享经验
这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿 ...
- Spring/Hibernate 应用性能优化的7种方法
对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能.此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法.本文系 O ...
随机推荐
- Angular:利用内容投射向组件输入ngForOf模板
现在,我们写一个组件puppiesListCmp,用于显示小狗狗的列表: //puppies-list.component.ts @Component({ selector: 'puppies-lis ...
- UVA1602
实现的细节很多,学到了如何翻转.旋转.平移,get很多技巧,值得一做. AC代码: #include<cstdio> #include<cstring> #include< ...
- 打造SpringBootTemplate(SpringBoot项目的模版)
随着框架使用的不断的更新,后面使用SpringBoot会多,这边准备构建一个SpringBoot项目使用的模版. 所谓模版,和之前一样,就是一个最简单的项目,包含所有最简单的空实现. 做模版的时候参考 ...
- flask中jinjia2模板使用详解2
接上文 注释的使用 在jinjia2模板中,使用{# #}进行代码注释,如下所示 运行后发现,注释不会被render出来 去掉空行 两种方法可以去掉jinjia2模板中的空白行,一是设置jinjia2 ...
- android判断网络是否可用
private boolean isNetworkConnected(Context context) { ConnectivityMannger cManager = (ConnectivityMa ...
- GET与POST请求的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- python调试
如果很简单的程序,建议还是pirnt打出来. 对于Linux环境,使用pdb/ipdb是一个不错的选择. 安装ipdb sudo pip install ipdb 开启调试 手动在需要调试的地方写入s ...
- 单片机:STC89C52的最小单元
STC89C52RC是STC公司生产的一种低功耗.高性能CMOS8位微控制器,具有 8K字节系统可编程Flash存储器.STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51 ...
- 【mysql】phpMyadmin上传文件限制
在使用phpMyadmin导入数据库的时候,因为脚本在上传的时候响应时间过长,导致大于2M的数据偶尔会导入失败.而且大多数默认设置,只能导入2M的数据. 遇到这种情况, 我们可以修改php.ini以及 ...
- 安装STS报错(三)
安装STS报错 1.具体报错如下 Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://repo.ma ...