u3d性能优化
yxriyin
因为啥都不精通,所以啥都自成一家
展开
-
unity3d移动平台性能优化专题(11):脚本细节
最近一直忙于逻辑,就一段时间没管性能,然后放到红米上,突然一开始有严重卡顿。情况如下: 以前所有战斗初始化都是在Awake()里面执行,全部时间大概是1-2s,但由于是在awake中,从体验上会觉得是和loading一块,所以没有影响。但现在增加了一个剧情,一开始设计的时候很简单,就是说剧情模式下执行剧情脚本,然后进入战斗再挂上战斗脚本。然后问题来了,我希望做到剧情和战斗的无缝衔原创 2015-03-21 15:21:13 · 1510 阅读 · 1 评论 -
unity3d 移动平台性能优化专题(12):面板的colider问题和rigibody设置
首先有一个官方的说法:静态Colider请不要移动,否则会引起物理引擎啥啥啥重置,消耗性能。 然后面板上毫无疑问是有colider的,而且可以肯定的是面板总是存在移动。那么就加上刚体,第二个问题来了,大量的刚体导致物理引擎计算时间过长。但我纳闷,刚体都是不动的,为啥会如此耗时呢?请教了下外国友人,如下: If you need the colliders j原创 2015-04-21 17:12:01 · 1615 阅读 · 0 评论 -
unity3d移动平台性能优化(13):对比法优化
有了上一个专题的经验,我决定通过和盗梦英雄对比来测试消耗性能的点。 面板上的已经处理了,但战斗中确实还是差了10帧左右的感觉。而且我们的卡顿比他们明显很多。 盗梦英雄: 空闲阶段:47-58帧。 战斗阶段:40-55帧 大招阶段:25-50帧 我们的游戏: 空闲阶段:47-53帧。原创 2015-04-25 14:09:49 · 982 阅读 · 2 评论 -
unity3d移动平台性能优化(14):渲染路径设置
今天发现一个场景特别卡,但看设置和drawcall似乎都正常,仔细对比了各方面的统计信息,发现一处异常:switch是4.其他场景switch全部是0. 即使我去掉场景,switch依然是4. 看来问题出在摄像头上。 谷歌了一下,说shader如果含有GrapPass可能会增加switch,但我并没有。而摄像机的参数呢,果然,渲染路径不是forward,设置成forward后就好了原创 2015-05-12 20:21:56 · 1497 阅读 · 0 评论 -
unity3d移动平台性能优化专题16:性能优化实战之20个复杂单位战斗
一直秉持着性能最优的原则,目前我们的3d游戏即使在红米上也能够到达平均45帧,最低30帧的水平。但这次有一个功能是一个大问题,我们平时战斗都是5v5,但这次需要做一个10v10,理论上复杂度*2,时间也应该*2. 45帧,那么*2后应该是25帧左右。但遗憾的是性能这东西并不是简单的乘法,而是超越一定瓶颈后会指数下降。果然,在红米上只有15帧,而且体验会有问题。那么根据前面的全部原创 2015-06-26 11:41:00 · 1345 阅读 · 0 评论 -
unity3d移动平台性能优化15:UIGrid优化
NGUI中有一个控件,UIGrid,例如背包就会用这个实现。 当物品很多的时候,UIGrid打开就会很卡,网上也有人提出了优化的方法,但我认为全部重写有点小题大做,只要找到卡的原因就好了。经过分析,有两个原因: 1.资源没有复用,这个其实非常简单,只要你自己弄一个对象池,然后不断复用grid就可以了。 2.只能一个个添加gird,没有批量添加方法原创 2015-06-10 13:13:19 · 1477 阅读 · 0 评论 -
NGUI UIScrollView UIGrid优化最佳方案,没有之一
对于UIScrollView存在大量item的时候,性能不佳一直被人诟病。然后很多人也弄了不错的方案,但感觉都不够美观,我觉得这个东西其实没有那么复杂。找了下原因,也很简单,因为NGUI在更新组件的时候,并不会判断是否可见,也就是说只要你scroll滑动了,那么所有的item都会重新draw一次。那当然会卡了。 既然原因这么明显,那么直接将不可见的设置为active为false不就原创 2015-07-28 16:11:50 · 4052 阅读 · 1 评论 -
见过的写的不错的一篇内存管理文章
Unity, C#, and Mono : Best Practices and Memory PatternsPosted on May 27, 2013 byJoe—Leave a comment C# is a fantastic programming language. You can get things up and running quickly, and it转载 2015-08-18 17:48:48 · 1323 阅读 · 0 评论 -
还是性能优化专题
最近面临一个比较大的挑战,就是大量角色的战斗,coc采用的是2d贴图,但我们希望用3d模型,这就导致了不得不对性能进行一次彻底的研究优化。1.判断物体是否在摄像机内,本来用unity自带的onwillrenderobject,发现非常耗时,改成自己用相机矩阵计算,节省了70%的时间。2.动态batch比想象中还要耗性能,尽量使用静态batch,动态并不万能,而且限制很多。改了之后,高峰从1原创 2015-12-22 19:11:34 · 1487 阅读 · 0 评论 -
性能优化新思路
1.DrawVBO主要是绘制物体的部分,可以通过两种方式优化,减少面数,减小贴图大小。2.MeshSkinRender主要是骨骼动画渲染部分,可以减少忒图大小以及对shader进行处理。3.Meshrender主要是主城,应该还有优化空间。4.特效通过是否显示优化巨人影响还挺大的。子弹特效音乐影响挺大的。原创 2016-07-10 17:59:07 · 681 阅读 · 0 评论 -
又是一轮性能优化
从4.36增加到16.25,最主要的是rendrSingle增加了。 看数量就知道,增加了接近80个特效。所以问题1:特效数量过多。从11.94增加到20.98. 就是meshskin 实打实的增加了6ms. 这个曾经想过用bakemesh优化,但不一定好使。这样看来有三大方案:渲染上,注意处理特效。同时想办法利用bakemesh减少animator 和meshs原创 2016-06-17 17:42:20 · 634 阅读 · 0 评论 -
安卓上图片格式问题
安卓上很多手机只支持opengl2.0在这种情况下,图片最好的格式是etc1.可etc1并不支持alpha通道。假设你使用etc2.那么在手机上会强制解压成rgba32,导致占用大量内存。所以解决方案是分离alpha通道。采用etc1的模式。这样也可以大量的节省内存。原创 2016-08-09 11:00:28 · 1388 阅读 · 1 评论 -
关于贴图Tiling过大导致overhead的问题
一开始以为Tiling只涉及到坐标计算,但发现Tiling过大的时候,掉帧很多。查了不少资料,最终找了了纹理采样的这样一篇文章:http://www.cnblogs.com/jerrycg/p/4629014.html其中最关键的部分是纹理缓存。纹理一级缓存很小,大概只有16kb以内。每次都是加载几十个像素进去。当tiling过大的时候,相邻像素之间所对应的uv坐标差别很大原创 2016-10-12 15:08:42 · 2004 阅读 · 0 评论 -
性能优化tip
最近碰到一个奇怪的问题,就是只渲染地表的时候,EarlyUpdate.PresentBeforeUpdate占用很多。一开始以为是手机过热,后来发现不是这样是因为地表贴图用了4张的2048*2048,而且没有开mipmap,导致带宽不足引起的。要时刻引起注意。...原创 2018-05-24 09:38:41 · 1041 阅读 · 0 评论