Characters包里面的内容讲完了,看了一下其他的貌似都比较复杂,这次先来个简单的吧——计算帧率,这边我还发一下我自己的一个实现。
我所比较疑惑的是在Game的窗口中点击Stats也会显示帧率,但这个帧率总会跟脚本测量的帧率有一定的出路,有时候甚至是一直大于我所测量的帧率的,计算方式有一些什么不同吗?
我们先来看看FPSCounter的脚本内容:
-
- [RequireComponent(typeof (Text))]
- public class FPSCounter : MonoBehaviour
- {
- const float fpsMeasurePeriod = 0.5f;
- private int m_FpsAccumulator = 0;
- private float m_FpsNextPeriod = 0;
- private int m_CurrentFps;
- const string display = "{0} FPS";
- private Text m_Text;
-
- private void Start()
- {
- m_FpsNextPeriod = Time.realtimeSinceStartup fpsMeasurePeriod;
- m_Text = GetComponent<Text>();
- }
-
-
- private void Update()
- {
-
- m_FpsAccumulator ;
- if (Time.realtimeSinceStartup > m_FpsNextPeriod)
- {
- m_CurrentFps = (int) (m_FpsAccumulator/fpsMeasurePeriod);
- m_FpsAccumulator = 0;
- m_FpsNextPeriod = fpsMeasurePeriod;
- m_Text.text = string.Format(display, m_CurrentFps);
- }
- }
- }
相信大家都是能写出来的,然后分享一个自用的FPS计数器,FPSShow:
-
- public class FPSShow : MyUtil
- {
-
-
- private static FPSShow instance;
- public FPSShow()
- {
- instance = this;
- }
- public static FPSShow getInstance()
- {
- return instance;
- }
-
-
- float fpsPassTime = 0f;
- int fpsCount = 0;
- float fps = 0f;
-
-
- bool isNeedEndTime = false;
- float startTime = 0f;
- float endTime = 0f;
-
-
- public void getEndTime()
- {
- isNeedEndTime = true;
- }
-
-
- public void calcFrame()
- {
- fpsCount;
- }
-
-
- void Update ()
- {
- calcFrame();
-
- if (!gameSystem.isDebug)
- return;
-
- if (isNeedEndTime)
- {
- startTime = endTime;
- endTime = Time.time;
- isNeedEndTime = false;
- }
-
- fpsPassTime = Time.deltaTime;
- if(fpsPassTime > 2.0f)
- {
- fps = fpsCount / fpsPassTime;
- fpsCount = 0;
- fpsPassTime = 0f;
- }
- }
-
- void OnGUI()
- {
- if (!gameSystem.isDebug)
- return;
-
-
- GUIStyle style = new GUIStyle();
- style.normal.background = null;
- style.normal.textColor = new Color(1.0f, 0.5f, 0.0f);
- style.fontSize = 40;
-
-
- GUI.Label(new Rect(Screen.width / 2 - 40, 0, 200, 200), string.Format("FPS:{0:0.00}, dTime:{1:0.0000}", fps, endTime - startTime), style);
- }
- }
本人入职第一天写了这个脚本,成功的测出了游戏的移动BUG所在,这个是最基础的,最有用的工具之一。
来自:http://blog.csdn.net/u012632851/article/details/53217603