Unity官方使用的FPS 的 计数方法,以及得出用于统计对比的中位数,平均数,方差
来源:互联网 发布:淘宝免费装修模板 编辑:程序博客网 时间:2024/05/29 11:26
Unity官方使用的FPS 的 计数方法,以及得出用于统计对比的中位数
,平均数
,方差
。
还是直接代码吧。很简单的。
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEditor;public class HUDFPS : MonoBehaviour { public float updateInterval = 0.1f; public float outputInterval = 10f; private float outputTime = 0; private float accum = 0; // FPS accumulated over the interval private int frames = 0; // Frames drawn over the interval private float timeleft; // Left time for current interval List<float> fpsList = new List<float>(); float fps ; float AverageNumber; float MedianNumber; float varianceNumber; void Start() { timeleft = updateInterval; QualitySettings.vSyncCount = 0; } void Update() { } void FixedUpdate() { outputTime += Time.deltaTime; timeleft -= Time.deltaTime; // Debug.Log(UnityStats.renderTime); if (timeleft <= 0.0) { fps = (0.1f / UnityStats.renderTime) * 10; // Debug.Log("renderTime :" + UnityStats.renderTime); fpsList.Add(fps); timeleft = updateInterval; } if (outputTime > outputInterval) { Debug.Log("fps :" + AverageNumber); AverageNumber = GetAverageNumber(fpsList); Debug.Log("AverageNumber :" + AverageNumber); MedianNumber = GetMedianNumber(fpsList); Debug.Log("MedianNumber :" + MedianNumber); varianceNumber = GetvarianceNumber(fpsList); Debug.Log("varianceNumber :" + varianceNumber); outputTime = 0; fpsList.Clear(); } } void OnGUI() { //GUILayout.Label("" + fps.ToString("f2") + " FPS"); // GUILayout.Label("" + AverageNumber.ToString("f2") + " Average"); // GUILayout.Label("" + MedianNumber.ToString("f2") + " Median"); // GUILayout.Label("" + varianceNumber.ToString("f2") + " variance"); } float number1; float number2; float number3; float GetMedianNumber(List<float> NumL) //中位数 { NumL.Sort (); if( NumL.Count % 2 == 0 ) { number1 = NumL [NumL.Count / 2]; number2 = NumL [(NumL.Count / 2) - 1]; number3 = (number1 + number2) / 2; return number3; } else { number3 = NumL [(int)(NumL.Count / 2)]; return number3; } } float number4 = 0; float GetAverageNumber(List<float> NumL) //平均数 { number4 = 0; for(int a = 0;a < NumL.Count; a++) { number4+= NumL[a]; } return (number4/NumL.Count); } float averageN; float sum; float GetvarianceNumber(List<float> NumL) //方差 { sum = 0; averageN = GetAverageNumber (NumL); for(int a = 0;a < NumL.Count; a++) { sum += Mathf.Pow((NumL [a] - averageN),2); } return sum / NumL.Count; }}
如果感觉上面代码计算的不准确,可以使用以下Unity 官方插件中,计算Fps的方法。
using System;using UnityEngine;using UnityEngine.UI;[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() { // measure average frames per second 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); } }}
阅读全文
0 0
- Unity官方使用的FPS 的 计数方法,以及得出用于统计对比的中位数,平均数,方差
- 【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印到控制台
- 【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印到控制台
- UNITY 用于打点统计的小工具
- 一种注入到unity游戏进程获取FPS的方法
- 求平均数的方法以及数的移位
- 求数组的中位数,平均数和众数的代码!
- 数据的统计量【方差】
- 平均数、中位数、众数的特点及应用场合
- 暑假第一周 G(中位数与平均数的比较)
- 递归的方法求平均数
- perl 计算平均数的方法
- 求平均数的简单方法
- Unity中的FPS的计算方式
- unity中FPS的设置与显示
- 一种测试FPS的方法
- 使用多种方法求两个数的平均数
- 使用Partition方法找数组的中位数
- 多GPU 训练的问题
- 多线程学习(一)
- Java 源码分析 ----- String类
- 比例简化 (noip2014普及组第二题)
- Keil(MDK-ARM)工程目标选项配置
- Unity官方使用的FPS 的 计数方法,以及得出用于统计对比的中位数,平均数,方差
- base64转file文件上传
- kamon文档翻译(三)--Tracing-核心概念
- slice,split,splice的区别与用法
- 最少拦截系统 dp
- IIC总线协议
- 同是“211”高校 区别却这么大!
- 集市班车
- js的面向对象