zoukankan      html  css  js  c++  java
  • Unity教程之-Unity3d移动平台性能优化专题(12):面板的设置

    转之http://www.unity.5helpyou.com/3064.html

    首先有一个官方的说法:静态Collider请不要移动,否则会引起物理引擎啥啥啥重置,消耗性能。

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

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

    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+帧,这样还算说得过去。

  • 相关阅读:
    AS3包类大全新手必学
    31天重构学习笔记27. 去除上帝类
    31天重构学习笔记26. 避免双重否定
    31天重构学习笔记29. 去除中间人对象
    与继承相关的一些重构(二)
    31天重构学习笔记28. 为布尔方法命名
    与继承相关的一些重构(一)
    31天重构学习笔记25. 引入契约式设计
    必会重构技巧(一):封装集合
    31天重构学习笔记30. 尽快返回
  • 原文地址:https://www.cnblogs.com/harlan1009/p/5749597.html
Copyright © 2011-2022 走看看