Unity优化图解】的更多相关文章

花了2天把之前学到的一些关于优化的知识全都写了下来,放到一张表里面 https://www.processon.com/mindmap/5cf64f53e4b0bc8329e8112e…
前段时间本人转战unity手游,由于作者(Chwen)之前参与端游开发,有些端游的经验可以直接移植到手游,比如项目框架架构.代码设计.部分性能分析,而对于移动终端而言,CPU.内存.显卡甚至电池等硬件因素,以及网络等条件限制,对移动游戏开发的优化带来更大的挑战. 这里就以unity4.5x版本为例,对Unity的优化方案做一个总结,有些是项目遇到的,也有些是看到别人写的不错拿来分享,算作一个整理,后期也会持续更新.本优化从CPU.GPU和内存三个方面着手总结,这一篇先从CPU说起,整理一些针对C…
版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 上篇文章<[Unity优化]Unity中究竟能不能使用foreach?>发表之后,曾经有网友说,在他的不同的Unity版本上,发现了泛型List无论使用foreach还是GetEnumerator均会产生GC的情况,这就有点尴尬了.由于它本身就是Mono编译器和相应.net库才能决定的原因,这就使得在使用系统提供的List时,又能最终摆脱GC的纠缠变得很困难.于是抓耳挠腮,翻出…
0x00 前言 在很长一段时间里,Unity项目的开发者的优化指南上基本都会有一条关于使用GetCompnent方法获取组件的条目(例如14年我的这篇博客<深入浅出聊Unity3D项目优化:从Draw Calls到GC>).有时候还会发展为连一些Unity内部对象的属性访问器都要小心使用的注意事项,记得曾经有一段时间我们的项目组也会严格要求把例如transform.gameobject之类的属性访问器进行缓存使用.这其中的确有一些措施是有道理的,但很多朋友却也是知其然而不知其所以然,朦胧之间似…
UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升 经确认,这个问题在手机上依然存在,不过占的比例非常小.因此优化后效果提升不明显(感觉不到提升)…
原文地址 目录 工具 Unity 分析器 GPA 系统分析器 GPA 帧分析器 如要充分发挥 x86 平台的作用,您可以在项目中进行多种性能优化,以最大限度地提升性能. 在本指南中,我们将展示 Unity* 软件中的多种工具和特性,以帮助您增强 Unity 项目的性能. 我们将介绍如何处理纹理质量.批处理.标压缩.光烘烤和 HDR 效果. 在本指南结束之际,您将能够了解 Unity 中的性能问题及其成因.关键优化和有助于开发优秀游戏的方法. 首先我们来看看有助于轻松识别应用中潜在热点的工具. 工…
Unity 优化总结 2017-03-10 | 发布 大海明月  zengfeng75@qq.com  | 分类 Unity  | 标签 Unity  优化 相关文档 UGUI 降低填充率技巧两则 UWA直播回顾| UGUI性能优化技巧 UGUI需要注意的点 1.UI叠加问题 如果叠加层有另外的calldraw夹着,会使本来该合并的calldraw独立.从而让calldraw上升 2.UI Mask遮罩 (1)mask先往缓存里画一个区域,产生一个calldraw (2)mask里面的物体与外面…
最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的document,而且个人习惯不喜欢看中文的资料,原汁原味的东西是最正确的,一翻译过来很多东西就都不那么准确了.于是通读了unity的官方manuel,最后面几章都是精华,里面给了非常非常多的官方的优化建议,尤其是做移动平台的开发,这些建议就是非常重要的.我将官方manuel advanced后面的那几个章节的东西提炼了一下出来,总结了这样一些优化tips: 1不是每个主流手机都支持的技术(就是如果可以不用就不用或有备选方案…
简单来说,Drawcall就是屏幕渲染一次所需要的开销,为了较少消耗,提高性能,一般有以下几种方法. 一: 批处理 1.动态批处理 如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理.动态批处理操作是自动完成的,并不需要你进行额外的操作,你可以在buildsetting中设置他. 动态批处理是消耗2倍的内存来提升显示的速度,也就是空间换时间,如果内存消耗过大,需要考虑时间和空间的平衡. 如果发现动态批处理后DC并没有减少,你可以检查以下方面: <1>批处理动态物体需要在每个…
1. 尽量避免每帧处理比如: function Update() { DoSomeThing(); } 可改为每5帧处理一次: function Update() { == ) { DoSomeThing(); } } 2. 定时重复处理用 InvokeRepeating 函数实现比如,启动0.5秒后每隔1秒执行一次 DoSomeThing 函数: function Start() { InvokeRepeating("DoSomeThing", 0.5, 1.0); } functi…
版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 做游戏好多年了,关于游戏优化一直是令开发者头疼的一个问题.因为优化牵扯的内容很多,要求掌握的知识点比较全面.在接下来的系列文章中,我想分享一下自己的一些经验.一些有误或者不完善之处请小伙伴们给我意见,加入一起探讨和学习. 程序消耗 所谓的优化,目的应该是尽可能减弱某种消耗,而在Unity上来说,大概可以分为以下几种: 程序的运行速度 程序的资源消耗 程序的功耗消耗 程序的运行速度…
Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种变化过程要经历无数中间步骤,调用N多次Update,如果直接在Update中不断刷新,界面很容易直接卡死.所以在一个协程中进行一些优化,只保留用户最后一次参数修正,省去中间步骤,就会好很多.这属于Unity编辑器的内容,也属于优化的内容,还是放在优化中吧. 解决问题思路 Unity官网的questi…
  转载请标明出处http://www.cnblogs.com/zblade/ 最近有点繁忙,白天干活晚上抽空写点翻译,还要运动,所以翻译工作进行的有点缓慢 =.= PS: 最近重新回来更新了一遍,文章还是需要反复修改才能写的顺畅,多谢各位的支持 :D 本文续接前面的unity的渲染优化,进一步翻译Unity中的GC优化,英文链接在下:英文地址 介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用.内存垃圾是指当前废弃数据所占用的内…
参考链接: https://docs.unity3d.com/Manual/RenderingStatistics.html unity版本:2018.3.8 新建一个场景,只保留Main Camera,修改Camera组件的ClearFlags为SolidColor,如下: 1.Tris & Verts Tris:三角面数 Verts:顶点个数 起始情况下,Tris为2,Verts为4,表示摄像机背景由2个三角面组成,占4个顶点 创建一个Cube,如下.推算得到一个Cube占12个三角面,24…
使用Profiler工具分析内存占用情况 System.ExecutableAndDlls:系统可执行程序和DLL,是只读的内存,用来执行所有的脚本和DLL引用.不同平台和不同硬件得到的值会不一样,可以通过修改Player Setting的Stripping Level来调节大小. Ricky:我试着修改了一下Stripping Level似乎没什么改变,感觉虽占用内存大但不会影响游戏运行.我们暂时忽略它吧(- -)! GfxClientDevice:GFX(图形加速\图形加速器\显卡 (Gra…
这里主要罗列Unity引擎进行开发的应用或游戏,可以进行优化的各个关注点.(此文会持续更新) C# GC alloc Update LateUpdate Serialize String ToString() += Getter API Object.name GetComponents Sprite.vectices Debug.Log Closure anonymous function Unity API ParticleSystem Start Stop Pause Clear Simu…
CPU bound:CPU性能边界,是指CPU计算时一直处于占用率很高的情况. GPU bound:GPU性能边界,同样的是指GPU计算时一直处于占用率很高的情况. 原文:https://unity3d.com/cn/learn/tutorials/temas/performance-optimization/optimizing-graphics-rendering-unity-games?playlist=44069   简介 在这篇文章中,我们将学习Unity渲染一帧时在幕后会发生什么,渲…
原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity-games?playlist=44069 介绍 当我们的游戏运行时,我们设备的中央处理器(CPU)执行指令.游戏的每一帧都需要执行数百万的CPU指令.为了保持平滑的帧率,CPU必须在规定的时间内执行指令.当CPU不能及时执行所有指令时,我们的游戏可能会变慢.卡顿. 许多事情会导致CPU有太多的工作…
Unity编辑器中何时须要协程 当我们定制Unity编辑器的时候,往往须要启动额外的协程或者线程进行处理.比方当运行一些界面更新的时候,须要大量计算,假设用户在不断修正一个參数,比方从1变化到2.这种变化过程要经历无数中间步骤.调用N多次Update,假设直接在Update中不断刷新,界面非常easy直接卡死.所以在一个协程中进行一些优化,仅仅保留用户最后一次參数修正.省去中间步骤,就会好非常多.这属于Unity编辑器的内容,也属于优化的内容,还是放在优化中吧. 解决这个问题思路 Unity官网…
1.顶点性能一般来说,如果您想在iPhone 3GS或更新的设备上每帧渲染不超过40,000可见点,那么对于一些配备 MBX GPU的旧设备(比如,原始的 iPhone,如 iPhone 3g和 iPod Touch第1和第2代)来说,你应该保证每帧的渲染顶点在10000以下.2.光照性能像素的动态光照将对每个受影响的像素增加显著的计算开销,并可能导致物体会被渲染多次.为了避免这种情况的发生,您应该避免对于任何单个物体都使用多个像素光照,并尽可能地使用方向光.需要注意的是像素光源是一个渲染模式(…
1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式, 2. 对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit. 3. 减少FPS,在ProjectSetting-> Quality中的VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS=60,EverySecondVBlank = 30: 这两种情况都不符合游戏的FPS的话,我们需要手动调整FP…
官方优化文档--优化图像性能http://docs.unity3d.com/Documentation/Manual/OptimizingGraphicsPerformance.html Unity3D性能优化专题性能优化是一个异常繁琐而又涉及到项目开发的方方面面的一个过程,它的本质是在运行时的一个时间里尽可能完美展现丰富的内容.实现优化可以通过优化资源.渲染.粒子.物理等模式:也可以通过修改模型大小.减少纹理尺寸并结合Unity3D的一些相关特性来提升游戏的性能.随着移动端的设备硬件能力的提升…
转载:http://www.jianshu.com/p/061e67308e5f Unity GUI(uGUI)使用心得与性能总结 背景和目的 小哈接触Unity3D也有一段时间了,项目组在UI解决方案的选型一直是用的原生的uGUI,因此本人也是使用了一段时间的uGUI,在uGUI的使用方面积累了一些自己的经验,在此进行一个记录与总结. 本文接下来将会对uGUI的Runtime性能进行着重讨论,其它的因素也很多而且很重要,但是一篇文章讲清楚一件事就好了,文后会提供uGUI的最佳实践与一些使用技巧…
优化-GPUGPU与CPU不同,所以侧重点自然也不一样.GPU的瓶颈主要存在在如下的方面: 填充率,可以简单的理解为图形处理单元每秒渲染的像素数量.像素的复杂度,比如动态阴影,光照,复杂的shader等等几何体的复杂度(顶点数量)当然还有GPU的显存带宽那么针对以上4点,其实仔细分析我们就可以发现,影响的GPU性能的无非就是2大方面,一方面是顶点数量过多,像素计算过于复杂.另一方面就是GPU的显存带宽.那么针锋相对的两方面举措也就十分明显了. 减少顶点数量,简化计算复杂度.压缩图片,以适应显存带…
CPU方面性能考虑:引擎和代码渲染模块.动画模块.物理模块.ui模块.粒子模块.加载模块.GC模块最重要的是渲染模块.UI模块和加载模块1.渲染模块主要是:场景.物体和特效的渲染a.降低Draw call在unity中,每次CPU准备数据并通知GPU的过程就称之为一个DrawCall.批处理Draw Call Batching原理:每一帧把可以进行批处理的模型网格进行合并,再把合并后模型数据传递给GPU,然后使用同一个材质对其渲染.动态批处理:条件是物体使用同一个材质,并且满足对应的特定条件,u…
浅谈Unity中的GC以及优化(转) Unity 官方文档,正巧在博客园发现了已经有位大神(zblade)把原文翻译出来了,而且质量很高~,译文地址 在这里.下面我就可耻地把译文搬运了过来,作为上面思维导图的知识点补充. 介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程. Unity中将垃圾回收当作内存管理的一部分,如果游戏中废弃数据占…
默认情况下当你把图片导入到unity中时,unity会自动把图片转换成最适合当前平台的压缩格式.如果你有一些特殊的需求,unity也提供了覆盖默认压缩格式的方法,如下图 在图片的Inspector窗口可以选择相应平台然后重写图片的压缩方式. 下图展示了不同平台可以使用的贴图格式 在项目的开发中会根据不同需求来调整贴图的压缩方式.对于大部分贴图资源,使用默认的压缩格式即可.如果一些UI需要特别高的清晰度可以使用RGBA32/RGB24,看起来和原图一样.在安卓平台ETC2 是unity在官方文档中…
参考链接: https://blog.csdn.net/liweizhao/article/details/81937590 1.在场景中放一些Cube,赋予一个新材质,使用内置shader(Unlit/Color),如下图,可以看出动态批处理生效了 2.挂上下面的脚本 using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public List…
U3D手册: Optimizing garbage collection in Unity games https://zhuanlan.zhihu.com/p/25306993 https://github.com/mc-gulu/gl-bits/tree/master/(2017)%20unity-gc-cheatsheet 这个收集很全,也很新,结合项目得出的实际经验值得参考 https://docs.unity3d.com/Manual/MobileProfiling.html 注意这里…
本文由博主(国宝大熊猫)原创,转载请注明出处:http://www.cnblogs.com/xsln/p/5151951.html 知识普及:      *Drawcall影响的是CPU的效率.因为draw call是CPU调用图形接口在屏幕上绘制对应的东西.     主体:       为了在屏幕上draw一个物件(因为render和draw有些区别,所以为了区分清楚,这些概念用英文),引擎需要提供一个draw call的API.draw call调用性能开销是很大的,会导致CPU部分的性能负…