Unity3D基于OnGUI實(shí)時(shí)顯示FPS
幀率(Frame rate)是用于測(cè)量顯示幀數(shù)的量度。所謂的測(cè)量單位為每秒顯示幀數(shù)(Frames per Second,簡(jiǎn)稱:FPS)或“赫茲”(Hz)。此詞多用于影視制作和電子游戲。由于人類眼睛的特殊生理結(jié)構(gòu),如果所看畫(huà)面之幀率高于16的時(shí)候,就會(huì)認(rèn)為是連貫的,此現(xiàn)象稱之為視覺(jué)暫留。
每秒的幀數(shù)(fps)或者說(shuō)幀率表示圖形處理器處理場(chǎng)時(shí)每秒鐘能夠更新的次數(shù)。高的幀率可以得到更流暢、更逼真的動(dòng)畫(huà)。一般來(lái)說(shuō)30fps就是可以接受的,但是將性能提升至60fps則可以明顯提升交互感和逼真感,但是一般來(lái)說(shuō)超過(guò)75fps一般就不容易察覺(jué)到有明顯的流暢度提升了。如果幀率超過(guò)屏幕刷新率只會(huì)浪費(fèi)圖形處理的能力,因?yàn)楸O(jiān)視器不能以這么快的速度更新,這樣超過(guò)刷新率的幀率就浪費(fèi)掉了。
以下是在Unity3D中顯示fps的代碼。
using UnityEngine; using System.Collections; [AddComponentMenu( "Utilities/HUDFPS")] public class FPSCounter : MonoBehaviour { //fps 顯示的初始位置和大小 public Rect startRect=new Rect(512, 10f, 75f, 50f ); //fps 過(guò)低時(shí)是否改變UI顏色 public bool updateColor = true; //fps UI 是否允許拖動(dòng) public bool allowDrag = true; //fps 更新的頻率 public float frequency = 0.5F; //fps 顯示的精度 public int nbDecimal = 1; //一定時(shí)間內(nèi)的fps數(shù)量 private float accum = 0f; //fps計(jì)算的時(shí)間 private int frames = 0; //GUI 依賴fps的顏色 fps<10 紅色 fps<30 黃色 fps>=30 綠色 private Color color = Color.white; //fps private string sFPS = ""; //GUI 的樣式 private GUIStyle style; void Start() { StartCoroutine(FPS()); } void Update() { accum += Time.timeScale/ Time.deltaTime; ++frames; } IEnumerator FPS() { while( true ) { //更新fps float fps = accum/frames; sFPS = fps.ToString( "f" + Mathf.Clamp( nbDecimal, 0, 10 ) ); //更新顏色 color = (fps >= 30) ? Color.green : ((fps > 10) ? Color.yellow : Color.red); accum = 0.0F; frames = 0; yield return new WaitForSeconds( frequency ); } } void OnGUI() { if( style == null ){ style = new GUIStyle( GUI.skin.label ); style.normal.textColor = Color.white; style.alignment = TextAnchor.MiddleCenter; } GUI.color = updateColor ? color : Color.white; startRect = GUI.Window(0, startRect, DoMyWindow, ""); } void DoMyWindow(int windowID) { GUI.Label( new Rect(0, 0, startRect.width, startRect.height), sFPS + " FPS", style ); if( allowDrag ) GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height)); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:Unity3D移動(dòng)端實(shí)現(xiàn)搖一搖功能
欄 目:C#教程
下一篇:C#調(diào)用新浪微博API實(shí)例代碼
本文標(biāo)題:Unity3D基于OnGUI實(shí)時(shí)顯示FPS
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4628.html
您可能感興趣的文章
- 01-10基于C#實(shí)現(xiàn)簡(jiǎn)單離線注冊(cè)碼生成與驗(yàn)證
- 01-10C#基于UDP實(shí)現(xiàn)的P2P語(yǔ)音聊天工具
- 01-10C#實(shí)現(xiàn)基于加減按鈕形式控制系統(tǒng)音量及靜音的方法
- 01-10C#基于WebBrowser獲取cookie的實(shí)現(xiàn)方法
- 01-10C#基于委托實(shí)現(xiàn)多線程之間操作的方法
- 01-10Unity3d獲取系統(tǒng)時(shí)間
- 01-10Unity3D獲取當(dāng)前鍵盤按鍵及Unity3D鼠標(biāo)、鍵盤的基本操作
- 01-10基于C#對(duì)用戶密碼使用MD5加密與解密
- 01-10基于C#實(shí)現(xiàn)簡(jiǎn)單的隨機(jī)抽獎(jiǎng)小程序
- 01-10C#基于cookie實(shí)現(xiàn)的購(gòu)物車功能


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery