您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Unity3D中怎么利用OnGUI實(shí)時(shí)顯示FPS,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
幀率(Frame rate)是用于測(cè)量顯示幀數(shù)的量度。所謂的測(cè)量單位為每秒顯示幀數(shù)(Frames per Second,簡(jiǎn)稱:FPS)或“赫茲”(Hz)。此詞多用于影視制作和電子游戲。由于人類眼睛的特殊生理結(jié)構(gòu),如果所看畫面之幀率高于16的時(shí)候,就會(huì)認(rèn)為是連貫的,此現(xiàn)象稱之為視覺暫留。
每秒的幀數(shù)(fps)或者說(shuō)幀率表示圖形處理器處理場(chǎng)時(shí)每秒鐘能夠更新的次數(shù)。高的幀率可以得到更流暢、更逼真的動(dòng)畫。一般來(lái)說(shuō)30fps就是可以接受的,但是將性能提升至60fps則可以明顯提升交互感和逼真感,但是一般來(lái)說(shuō)超過75fps一般就不容易察覺到有明顯的流暢度提升了。如果幀率超過屏幕刷新率只會(huì)浪費(fèi)圖形處理的能力,因?yàn)楸O(jiān)視器不能以這么快的速度更新,這樣超過刷新率的幀率就浪費(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 過低時(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)); } }
關(guān)于Unity3D中怎么利用OnGUI實(shí)時(shí)顯示FPS就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。