性能优化
文章平均质量分 54
无敌懵哥
这个作者很懒,什么都没留下…
展开
-
Unity优化之减少Drawcall
简单来说,Drawcall就是屏幕渲染一次所需要的开销,为了较少消耗,提高性能,一般有以下几种方法。一: 批处理1.动态批处理如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的,并不需要你进行额外的操作,你可以在buildsetting中设置他。动态批处理是消耗2倍的内存来提升显示的速度,也就是空间换时间,如果内存消耗转载 2016-07-30 17:15:50 · 5879 阅读 · 0 评论 -
unity Profiler性能分析
A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 C. Physics.Simulate: 当前帧物理模拟的CPU占用时间。转载 2017-03-19 11:27:16 · 304 阅读 · 0 评论 -
unity3d Player Settings 中的Stripping Level(剥离等级)对应每个等级具体剥离了哪些库
http://docs.unity3d.com/410/Documentation/ScriptReference/MonoCompatibility.html原创 2017-03-19 11:29:32 · 2660 阅读 · 0 评论 -
Unity 使用 Stripping Level == Use micro mscorlib 导致 MD5.Create() 返回NULL
这几天在弄资源更新,昨天导出Android APK 到手机上测试,发现MD5 校验的时候一直出错,打出Log 重新导包测试发现MD5.Create() 返回NULL 但是在电脑上是好好的,在手机上怎么就不行了呢?Google MD5.Create() null Unity3D 搜索后,得到答案,如果在Unity 使用 Stripping Level转载 2017-03-19 11:30:21 · 832 阅读 · 0 评论 -
Unity3D游戏场景优化之批处理
版权声明:本文采用国际知识共享“署名-非商业使用-禁止演绎”协议4.0进行授权许可。转载请注明作者姓名和文章出处。目录(?)[+]喜欢我的博客请记住我的名字:秦元培,我的博客地址是:http://qinyuanpei.com 转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/articl转载 2017-03-19 11:40:19 · 962 阅读 · 0 评论 -
Unity3D Mesh小课堂(五)CombineMeshes合并网格
转自:http://blog.csdn.net/ecidevilin/article/details/52490960合并网格可以提升性能,而且也可以让我们更好更灵活的管理模型。例如下面这三个模型:有些时候我们会希望这三个模型使用同一个Collider,但是我们显然不能让美术再给我们专门为碰撞做模型来。因为他们可能会有不同的组合,或者跟其他的物体进行组合,如果每转载 2017-03-22 00:04:23 · 1626 阅读 · 0 评论 -
通过profiler对unity进行针对性优化
1. CPU Usage A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 C. Physics.Simula转载 2017-03-14 00:36:45 · 556 阅读 · 0 评论 -
Unity3D游戏优化之头顶UI
3D角色头顶会显示文字、图标、血条等,它会跟随角色移动,始终朝向相机,可能还有定制的缩放,一般情况下会考虑用UGUI来做,但完成后发现这样做的效率很低,而且遮挡正确性也保证不了。效率低因为:1,渲染上每块文字、图片都要用一次drawcall,图片文字又可能是交替出现的没法利用dynamic batching,UGUI的渲染顺序是hierachy从上到下,基本上必然交替出现。一个角色转载 2017-04-11 10:15:16 · 4872 阅读 · 1 评论 -
记一次基于Unity的Profiler性能分析
A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 C. Physics.Simulate: 当前帧物理模拟的CPU占用时间。转载 2017-03-17 13:04:54 · 227 阅读 · 0 评论 -
Unity3D中使用Profiler精确定位性能热点的优化技巧
简介 在使用Profiler定位代码的性能热点时,很多同学往往忽略Profiler的提供接口,当发现某个Update函数特别耗时时,没有有效的手段进一步定位热点出自该Update函数的哪一个模块或哪一段代码。 使用Profiler评估客户端性能时,推荐使用Profiler提供的性能采样接口,来更精确地分析定位客户端存在的性能问题。 举个例子说明转载 2017-03-17 14:23:03 · 775 阅读 · 0 评论 -
Unity Assetbundle的加载方式的效率和内存占用
首先,简要介绍一下加载AssetBundle的主要两种方式,分别是new WWW(url)和WWW.LoadFromCacheOrDownload,两种方式的具体用法,自己查官方API,这里不再叙述new WWW是单纯地把AssetBundle加载到内存WWW.LoadFromCacheOrDownload是把AssetBundle写入到缓存中,然后在需要加载AssetBund转载 2017-04-13 10:36:43 · 6673 阅读 · 1 评论 -
Unity3D:资源包的压缩(Asset Bundle Compression)
Unity支持三种资源包的压缩方式:LZMA,LZ4和不压缩。LZMA格式资源包默认编译是压缩格式的。标准压缩格式使用的是单一的LZMA算法的序列化的数据文件流,使用前需要获取完整的数据再解压缩。LZMA压缩包下载容量最小,但会导致解压变慢和加载时间更长。LZ4格式Unity还支持LZ4压缩,它会导致较大的压缩文件,但是这种方式不要求完整的数据包就可以解压缩转载 2017-04-13 10:40:35 · 4334 阅读 · 0 评论 -
UGUI研究院之有效解决RaycastTarget勾选过多的烦恼(二十三)
看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。团队多人在开发游戏界面,很多时候都是复制黏贴,比如上一个图片是需要响应RaycastTarget,然后ctrl+d以后复制出来的也就带了这个属转载 2017-04-11 10:09:57 · 528 阅读 · 0 评论 -
unity真机profiler调试
http://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html原创 2017-04-21 21:53:21 · 3572 阅读 · 0 评论 -
Unity 3D中的内存管理
本文欢迎转载,但烦请保留此行出处信息:http://www.onevcat.com/2012/11/memory-in-unity3d/Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备的游戏开发,动辄内存占用飙上一两百兆,导致内存资源耗尽,从而被系统强退造成极差的体验。类似这种情况并不少见,但是绝大部分都是可以避免的。虽然理论上Unity的内存管理系统应当为开发者分忧解难,让转载 2017-03-19 11:13:03 · 326 阅读 · 0 评论 -
刨根问底U3D---从Profile中窥探Unity的内存管理
这篇文章包含哪些内容这篇文章从Unity的Profile组件入手,来探讨一下Unity在开发环境和正式环境中的内存使用发面的一些区别,并且给出了最好控制内存的方法(我想你已经知道了...Prefab ) ,以及原因。 提前需要阅读的文章在阅读本文之前或之后我建议阅读一下以下几篇文章 雨松的Unity3D研究院之Assetbundle的转载 2017-03-19 11:03:46 · 314 阅读 · 0 评论 -
Unity教程之-unity3d移动平台性能优化专题(三):减少面数
Watch out for vertex creep. Many mobile devices are actually pretty good at handling scenes with lots of verts. But most GPUs fall down really hard after you pass a certain threshold of geometry per转载 2017-03-19 10:41:58 · 7011 阅读 · 0 评论 -
Unity开发-你必须知道的优化建议
最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的document,而且个人习惯不喜欢看中文的资料,原汁原味的东西是最正确的,一翻译过来很多东西就都不那么准确了。于是通读了unity的官方manuel,最后面几章都是精华,里面给了非常非常多的官方的优化建议,尤其是做移动平台的开发,这些建议就是非常重要的。我将官方manuel advanced后面的那几个章节的东西提炼了一下出转载 2016-07-30 17:30:49 · 202 阅读 · 0 评论 -
使用简单对象池做一个滚动界面
之所以产生这个需求,是因为有些滚动面板里面的内容过多,会出现开始实例化的时候时间过长造成卡顿,且 DrawCall暴增。所以解决方案是只实例化出当前能显示的数目多一行, 然后动态设置内容的位置。原创 2016-08-18 18:16:27 · 924 阅读 · 0 评论 -
内存优化总结
在C#中,托管资源都会通过GC机制被自动回收。而一些非托管资源如sqlonnect、stream等需要通过using或者dispose手动释放通常不建议使用析构函数,不恰当的使用析构函数反而会对性能造成影响原创 2016-08-03 11:42:44 · 248 阅读 · 0 评论 -
Unity性能优化专题---腾讯牛人分享经验
转自:http://mp.weixin.qq.com/s?__biz=MzA4MDc5OTg5MA==&mid=209776006&idx=2&sn=d56d0bf4819493fa4fc452e36042890f&scene=5#rd这里从三个纬度来分享下内存的优化经验:代码层面、贴图层面、框架设计层面。一.代码层面。1.foreach。Mono下的foreach使用需谨转载 2016-12-05 17:41:25 · 1578 阅读 · 0 评论 -
项目优化之——CPU
.原创 2017-01-02 09:12:23 · 215 阅读 · 0 评论 -
项目优化之——Profiler常见项目解析
一、WaitForTargetFPS:该参数一般出现在CPU开销过低,且通过设定了目标帧率的情况下(Application.targetFrameRate)。当上一帧低于目标帧率时,将会在本帧产生一个WaitForTargetFPS的空闲等待耗时,以维持目标帧率。解析:该项在Unity引擎的主循环中其实是最早执行的,即引擎实际上是根据上一帧的CPU耗时,在当前帧中通过增补WaitF原创 2017-01-02 17:40:59 · 396 阅读 · 0 评论 -
项目优化之——UI
一、降低填充率Fill Rate(填充率)是指显卡每帧每秒能够渲染的像素数。在每帧绘制中,如果一个像素被反复绘制的次数越多,那么它占用的资源也必然更多。目前在移动设备上,FillRate 的压力主要来自半透明物体。因为多数情况下,半透明物体需要开启 Alpha Blend 且关闭 ZTest和 ZWrite,同时如果我们绘制像 alpha=0 这种实际上不会产生效果的颜色上去,也同样有 B原创 2017-01-02 18:02:50 · 300 阅读 · 0 评论 -
Unity Editor编译顺序
对于大型项目来说,这确实是大家经常遇到的情况。一般来说,Unity Editor会按照脚本的依赖关系编译代码,其主要分为以下四个步骤:编译Standard Assets、Pro Standard Assets和Plugins文件夹中的Runtime Script;编译以上三个文件夹中Editor文件夹下的Script;编译项目中所有剩余的Runtime Script(Edito原创 2017-01-02 20:46:48 · 1109 阅读 · 0 评论 -
UGUI和NGUI性能对比
关于UI开发,NGUI和UGUI究竟哪个性能更好呢?从理论上来说,没有什么依据可以证明UGUI的性能一定比NGUI更优异。在UWA的测评报告中,对于NGUI来说,主要统计UIPanel.LateUpdate\UICamera.Update\UIRect.Update和UIRect.Start;对于UGUI来说,主要统计Canvas.BuildBatch和Canvas.SendwillR原创 2017-01-02 20:48:54 · 3674 阅读 · 0 评论 -
对纹理进行Alpha通道分离的好处
我们正在权衡是否对纹理资源进行Alpha通道分离。现在发现,Android低端机上(OPENGL ES 2.0)使用Alpha分离,内存相当是两个ETC1的大小(相对RGBA32是小了很多),但是Shader中纹理采样会执行两次,这个采样其实对低端机消耗还是蛮大的吧?在iOS上分离是没有意义的,而且分离之后使用上会变麻烦,这样权衡之下,分离Alpha只是改善内存的话,优势看起来感觉不太明显,是否有转载 2017-01-02 21:02:34 · 4498 阅读 · 0 评论 -
Unity的UGUI中使用ETC1+Alpha的格式
转自:http://blog.csdn.net/langresser_king/article/details/52759899 Unity5.3之后,Android平台的默认压缩纹理改为ETC2。ETC2支持半透明,使用也很方便,不过问题是尚未普及,尤其是低端机是不支持ETC2的。Unity对不支持ETC2的机子,在加载图片的时候会解压为RGBA,不过这样就会造成极大的内存浪费转载 2017-01-04 01:14:03 · 1265 阅读 · 0 评论 -
项目优化之——总览
项目优化一、从流程上可分为:物理体积、加载性能、内存占用二、从加载类型上分为:纹理、网格、shader、动画三、从优化类型:UI(ugui)、打包加载、对象池优化工具:profiler、frame debugger、mesh baker、occurlus、LOD原创 2017-01-01 17:19:56 · 233 阅读 · 0 评论 -
项目优化之——加载
加载优化主要从一下几块着手:纹理、网格、shader、动画纹理:尽量采用硬件支持格式,安卓(ETC1、ETC2),ios(PVRTC)对于UI和一些不必要对纹理在运行时进行处理的关闭Read/Write,打开这个会使内存占用翻倍纹理分辨率采用2的n次方对于UI和一些不需要远近处理的纹理关闭mipmap纹理的分辨力率尽量小,够用就好的原则网格:顶点、面原创 2017-01-01 17:45:14 · 600 阅读 · 0 评论 -
UGUI性能优化
UGUI性能优化UGUI会自动检测优化,如果多个材质间没有遮挡或只有小部分不影响的遮挡则会合并DrawCall为一个。如下图:尽可能保证Text在Image的上方。字体的DrawCall就可能自动会优化,而不需要像NGUI那样让字体跟图片pack在一起来减少DrawCall。尽可能保证Image之间不存在不必要的重叠。UI变色:修改材质和修改顶点色两种方式合转载 2017-07-15 17:51:19 · 722 阅读 · 0 评论