本文是Unity官方教程,性能优化系列的第一篇<The Profiler window>的简单翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻译 Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译 Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译 Unity性能优化(4)…
本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻译 Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译 Unity性能优化(3)-官方教程Optimizing garbage co…
本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻译 Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译 Unity性能优化(3)-官方教程Optimizing garbage collection in Uni…
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻译 Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译 Unity性能优化(3)-官方教程Optimizing garbage collection in Uni…
开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. 该插件可在Run-time和Editor中都可以使用,同时开放了源码,大家可以根据项目的实际情况而作修改. http://download.csdn.net/download/jasonczy/10178526 一. 转载自 http://blog.csdn.net/game_jqd/articl…
贴图: l  控制贴图大小,尽量不要超过 1024 x1024: l  尽量使用2的n次幂大小的贴图,否则GfxDriver里会有2份贴图: l  尽量使用压缩格式减小贴图大小: l  若干种贴图合并技术: l  去除多余的alpha通道: l  不同设备使用不同的纹理贴图,分层显示: 模型: l  尽量控制模型的面数,小于1500会比较合适: l  不同设备使用不同的模型面数: l  尽量保持在30根骨骼内: l  一个网格不要超过3个material: 动画: l  N种动画压缩方法: l …
这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿现象. 特别注意的是在Update中如果非必要,不要使用foreach.尽可能用for来代替foreach.会产生GC Alloc,说明foreach调用GetEnumerator()时候有堆内存上的操作,new和dispose. 2.string修改. 如果熟悉C++的话,就会了解,每次使用str…
没想到Unity的音频会成为内存杀手,在实际的商业项目中,音频的优化必不可少. 1. Unity支持许多不同的音频格式,但最终它将它们全部转换为首选格式.音频压缩格式有PCM.ADPCM.Vorbis,不是所有平台都支持这些所有的压缩格式,有些平台,例如WebGL只支持AAC格式. 2.所有音频导入时,默认两项设置,LoadType是"Decompress On Load",压缩格式是“Vorbis”,例如下图原始文件大小计算为35.9 MB,导入的大小计算为10.7 MB.这意味着这…
1. DrawCall是啥?其实就是对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西.所以,是谁去调用这些接口呢?CPU.比如有上千个物体,每一个的渲染都需要去调用一次底层接口,而每一次的调用CPU都需要做很多工作,那么CPU必然不堪重负.但是对于GPU来说,图形处理的工作量是一样的.所以对DrawCall的优化,主要就是为了尽量解放CPU在调用图形接口上的开销.所以针对drawcall我们主要的思路就是每个物体尽量减少渲染次数,多个物体最好一起渲染. 2. 优化方式 (…
Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如何组成三角形),变换(就是物体的位置.旋转.缩放.以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,GPU基于这些数据,经过一系列运算,在屏幕上画出成千上万的三角形,最终构成一幅图像. 在Unity中…
一.优化组件访问方式 原文:http://blog.csdn.net/lijing_hi/article/details/11657887 1.缓存Component的引用,如transform 2.缓存Components列表的引用,再遍历 二.使用Delegate的委托事件取代SendMessage 原文:http://blog.csdn.net/chiuan/article/details/7918833…
LOD,中文名多层次细节,是游戏中最常用的技术,它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算.今天我们来实现使用它来做一个简单的优化例子. 我们没有模型(程序员的悲哀)就用Particle粒子特效来做试验吧.在场景中建立一个空物体,取名LODEffects,在空物体下面建立一个Particle并复制两份都做为子物体.这们用这三个Particle可以当作不同细节的模型,分别调整它们的ParticleSystem组件下Emission的Ra…
特效合并,意思是说将粒子所用的零碎图片,以shader为单位合并成一张图集,好处就是可以降低draw call.试想,合并前每个粒子使用一个material,而每一个material就要占用一个drawcall,而合并后多个粒子可以用同一个material,这样就降低了drawcall,提升了性能. 转载请注明出处:http://www.cnblogs.com/jietian331/p/8625078.html 合并工具的代码如下: using System.Collections.Generi…
Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如何组成三角形),变换(就是物体的位置.旋转.缩放.以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,GPU基于这些数据,经过一系列运算,在屏幕上画出成千上万的三角形,最终构成一幅图像. 在Unity中…
1.对象池Object Pool的原理: 有些GameObject是在游戏中需要频繁生成并销毁的(比如射击游戏中的子弹),以前的常规做法是:Instantiate不断生成预设件Prefab,然后采用碰撞销毁,或者定时销毁,大量创建重复对象造成内存损耗,影响性能还容易产生内存碎片. 所谓对象池,就是针对需要经常生成消失的对象.我们在对象需要消失的时候不Destroy而是SetActive(false),然后放入池子中,当需要再次显示一个新的对象的时候,先去池子中看有没有隐藏的对象,有就取出SetA…
1. Occlusion Culling-遮挡剔除的含义:没有在Camear视野范围内的游戏物体不进行渲染Render(默认情况下,Unity是会渲染所有GameObject,无论Camear是否看得见),例如下图: 2. 使用比较简单,效果也是立竿见影 (1)配置下游戏物体: (2)“window"菜单->Rendering->Occulision Culling, (3)Tab项”Object",选择"All" (4)切换到Bake菜单,直接使用默认…
https://wuzhiwei.net/unity_script_optimization/…
聊聊近况: 距离上一篇文章已经过了好久,主要原因是我懒了.公司项目也到了开始优化的阶段,上网找的资料,看过了就忘.还是想把它整理一下,写出来.其实我说的东西,网上都有,我只是搬运工而已. 贴图压缩: Android平台使用ETC1格式压缩. 目前主流的Android机型基本都支持ETC1格式压缩.但ETC1只能支持非Alpha通道的图片压缩. 所以一般把RGB和ALPHA分离出来,r值,g值,b值从RGB图获取,a值从Alpha图里获取. 随着OPENGL ES 3.0的发布,etc2也出了,支…
大家都知道,react的一个痛点就是非父子关系的组件之间的通信,其官方文档对此也并不避讳: For communication between two components that don't have a parent-child relationship, you can set up your own global event system. Subscribe to events in componentDidMount(), unsubscribe in componentWillU…
一.引子 最近马三入职了新公司,平时除了负责编辑器开发之外还要做一些游戏性能优化方面的工作.在这里首先给大家安利一下Unity官方的性能测试分析工具URP ,这个工具目前是免费,测试的过程中也不需要接入任何SDK,测试完成以后还可以生成一份性能测试报告.当然,相比侑虎科技的UWA GOT工具来讲,目前UPR功能还是比较少的,不过在项目初期完全可以先使用UPR做一些性能优化工作.好了言归正传,我们今天说说如何在真机上开启DeepProfile模式以及一些坑. 二.在真机上开启DeepProfile…
https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247490321&idx=1&sn=f9f34407ee5c5d0d1edb478981299108&chksm=fe1e2fbac969a6acee4eddb865d161fe09400c9147794c777ea4087e59f1e5fc3ccca5d1d0dd&scene=21#wechat_redirect 在10月26日的Unity独立游戏日上,…
前段时间本人转战unity手游,由于作者(Chwen)之前参与端游开发,有些端游的经验可以直接移植到手游,比如项目框架架构.代码设计.部分性能分析,而对于移动终端而言,CPU.内存.显卡甚至电池等硬件因素,以及网络等条件限制,对移动游戏开发的优化带来更大的挑战. 这里就以unity4.5x版本为例,对Unity的优化方案做一个总结,有些是项目遇到的,也有些是看到别人写的不错拿来分享,算作一个整理,后期也会持续更新.本优化从CPU.GPU和内存三个方面着手总结,这一篇先从CPU说起,整理一些针对C…
Unity 绘图性能优化 - Draw Call Batching Unity官方链接:http://docs.unity3d.com/Manual/DrawCallBatching.html 转载请注明本文链接:http://www.cnblogs.com/fly-100/p/5422734.html Draw Call Batching 在屏幕上绘制一个物体,U3D引擎必须向绘图API(openGL或者D3D)发起一次DrawCall.这些DrawCall往往是昂贵的,当绘图API为每个Dr…
luajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易.实际使用的时候往往会发现,刚开始写的一些小test case性能非常好,经常毫秒级就算完,可是代码复杂度一上去了,动辄几十上百毫秒的情况就会出现,性能表现非常飘忽. 为此luajit的mailling list也是有不少人咨询,作者mike pall的一篇比较完整的回答被放在了官方wiki上:   http://wiki.luajit.org/Numerical-Computing-…
本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划分画布 问题:UI Canvas上有一个或多个元素变化时,会污染整个画布. 画布(Canvas)是Unity UI的基本组件.它会生成网格来呈现放置在画布上的UI元素,当UI元素变化时,它会重新生成网格并向GPU发起绘图调用,从而显示出UI. 生成这些网格会消耗大量性能,需要将UI元素收集到批处理中,从而尽可…
Mysql 性能优化教程 目录 目录 1 背景及目标 2 Mysql 执行优化 2 认识数据索引 2 为什么使用数据索引能提高效率 2 如何理解数据索引的结构 2 优化实战范例 3 认识影响结果集 4 影响结果集的获取 4 影响结果集的解读 4 常见案例及优化思路 5 理解执行状态 7 常见关注重点 7 执行状态分析 8 分析流程 9 常见案例解析 11 总结 12 Mysql 运维优化 14 存储引擎类型 14 内存使用考量 14 性能与安全性考量 14 存储/写入压力优化 15 运维监控体系…
Mysql性能优化教程 背景及目标 厦门游家公司(4399.com)用于员工培训和分享. 针对用户群为已经使用过mysql环境,并有一定开发经验的工程师 针对高并发,海量数据的互联网环境. 本文语言为口语,非学术标准用语. 以实战和解决具体问题为主要目标,非应试,非常规教育.友情提醒,在校生学习本教程可能对成绩提高有害无益. 非技术挑战,非高端架构师培训,请高手自动忽略. 本文档在2011年7月-12月持续更新,加强了影响结果集分析的内容并增补优化实战案例若干. Mysql执行优化 认识数据索引…
在这里列出Babylon.js官方性能优化文档的中英文对照,并在CardSimulate项目里对其中的一些优化方法进行实践. How To 如何 Optimize your scene 优化你的场景 Table of contents 内容列表 How To Optimize Your Scene 如何优化你的场景 Use TransformNode instead of AbstractMesh or empty meshes 使用变换节点代替抽象网格或者空网格 Changing per me…
本篇内容主要来自Unity官方手册: 一般性能优化 一些地方为本人瞎编杜撰,请酌情参考.如有错误,欢迎指出. Unity里C#编程虽然既简单还很爽,但是性能小陷阱还不少.我总强迫自己让代码最优,因此很留意这些细节.这里我记录了一下最近发现的一下优化点.   协程 别嵌套 协程( Coroutine )固然爽,我用起来可得心应手了,刷刷刷,平滑动画,等待加载,定时启动…… 官方的意见是: 在可能的情况下,最好将一系列操作压缩到尽可能少协程.虽然嵌套协程非常适合代码清晰度和维护,但由于协程跟踪对象,…
参考:https://segmentfault.com/a/1190000007811296?utm_medium=referral&utm_source=tuicool  或  https://blog.csdn.net/qq_37398213/article/details/82284244 或 https://www.jianshu.com/p/76ee90125e9f 一.react 组件的 更新,默认做法是调用所有组件的render,再对生成的虚拟DOM进行对比,如不变则不进行更新.这…