您的位置:首页 > 移动开发 > Unity3D

unity3d 移动平台性能优化专题(12):面板的colider问题和rigibody设置

2015-04-21 17:12 337 查看
首先有一个官方的说法:静态Colider请不要移动,否则会引起物理引擎啥啥啥重置,消耗性能。

然后面板上毫无疑问是有colider的,而且可以肯定的是面板总是存在移动。那么就加上刚体,第二个问题来了,大量的刚体导致物理引擎计算时间过长。

但我纳闷,刚体都是不动的,为啥会如此耗时呢?请教了下外国友人,如下:



If you need the colliders just as raycast hit object do this:

Make sure they are set to isTrigger

Create a new layer for the objects and put them all on this layer

Go to Edit -> project settings -> Physics and disable all interactions in the collision matrix. So just clear the row and column of your layer in the matrix.

When raycasting against them make sure you use the layermask and pass a layermask that only contains the layers you want to raycast against.

哈哈,按照他说的做之后,果然性能上不在是刚体消耗,不过似乎帧数并没有提高,我决定继续分析一下。

看了下似乎是渲染同步引起的,但渲染方面似乎没有太好的办法,而且我也好奇为啥我们的面板渲染消耗这么高。

经过测试,似乎只要打开一个面板,手机上直接下降10帧。看来面板上确实有什么东西存在。

那么就要进行比较分析了。我首先编译了一个简单版,和性能分析器相连,然后在不打开面板情况下观察,然后突然打开一个面板,看两遍的性能消耗变化。

暂时不好发现问题所在,只能通过比较了,安卓上下载了一个帧率显示器,进入了我叫MT2和盗梦英雄的游戏,面板上显示竟然是接近60帧,而我们的,只能到30帧。我勒个去,到底是啥问题啊。

经过不断研究,发现了一个特点,就是盗梦英雄和我叫MT背景都是2d的,我们的背景是一个主城,3d的。那么可能就是这个原因,背景摄像机和UI摄像机叠加计算。

那么就是说,我们打开面板,背景其实就要被舍弃了。一种比较好的体验就是将背景模糊,然后***成一个贴图放到UI上,但如果自己做图片会很大,如果用程序实现,怕会有卡顿。然后请教了下策划,它们说游戏很多都是这么处理的,找一个通用的背景图,统一作为所有面板的模糊背景。应该是可行的。ok。既然如此,就测试一下,随便写了两行,打开面板就关闭3d摄像机。关闭面板又会开启3D摄像机。

测试效果不错,增加到了40+帧,这样还算说得过去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: