魔灵 发表于 2012-6-7 21:43

如何获取Unity游戏时的FPS?

看了很多太复杂求高手 给个代码 O(∩_∩)O 我懒 谢谢{:soso__2891809371178566359_2:}

资源大湿 发表于 2012-6-8 15:15

JavaScript - FramesPerSecond.js// Attach this to a GUIText to make a frames/second indicator.
//
// It calculates frames/second over each updateInterval,
// so the display does not keep changing wildly.
//
// It is also fairly accurate at very low FPS counts (<10).
// We do this not by simply counting frames per interval, but
// by accumulating FPS for each frame. This way we end up with
// correct overall FPS even if the interval renders something like
// 5.5 frames.

var updateInterval = 0.5;

private var accum = 0.0; // FPS accumulated over the interval
private var frames = 0; // Frames drawn over the interval
private var timeleft : float; // Left time for current interval

function Start()
{
    if( !guiText )
    {
      print ("FramesPerSecond needs a GUIText component!");
      enabled = false;
      return;
    }
    timeleft = updateInterval;
}

function Update()
{
    timeleft -= Time.deltaTime;
    accum += Time.timeScale/Time.deltaTime;
    ++frames;
   
    // Interval ended - update GUI text and start new interval
    if( timeleft <= 0.0 )
    {
      // display two fractional digits (f2 format)
      guiText.text = "" + (accum/frames).ToString("f2");
      timeleft = updateInterval;
      accum = 0.0;
      frames = 0;
    }
}CSharp HUDFPS.csA C# implementation of the above converted by Opless. The main difference is the colour change when FPS dips too low.

using UnityEngine;
using System.Collections;

public class HUDFPS : MonoBehaviour
{

// Attach this to a GUIText to make a frames/second indicator.
//
// It calculates frames/second over each updateInterval,
// so the display does not keep changing wildly.
//
// It is also fairly accurate at very low FPS counts (<10).
// We do this not by simply counting frames per interval, but
// by accumulating FPS for each frame. This way we end up with
// correct overall FPS even if the interval renders something like
// 5.5 frames.

publicfloat updateInterval = 0.5F;

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

void Start()
{
    if( !guiText )
    {
      Debug.Log("UtilityFramesPerSecond needs a GUIText component!");
      enabled = false;
      return;
    }
    timeleft = updateInterval;
}

void Update()
{
    timeleft -= Time.deltaTime;
    accum += Time.timeScale/Time.deltaTime;
    ++frames;
   
    // Interval ended - update GUI text and start new interval
    if( timeleft <= 0.0 )
    {
      // display two fractional digits (f2 format)
    float fps = accum/frames;
    string format = System.String.Format("{0:F2} FPS",fps);
    guiText.text = format;

    if(fps < 30)
      guiText.material.color = Color.yellow;
    else
      if(fps < 10)
            guiText.material.color = Color.red;
      else
            guiText.material.color = Color.green;
    //DebugConsole.Log(format,level);
      timeleft = updateInterval;
      accum = 0.0F;
      frames = 0;
    }
}
}Boo FPS_Display.booA Boo implementation of the above converted by Philbywhizz.

import UnityEngine

class FPS_Display (MonoBehaviour):

    public updateInterval as single = 0.5
   
    private accum as single = 0 // FPS accumulated over the interval
    private frames as int = 0 // Frames drawn over the interval
    private timeleft as single // Left time for current interval
   
    def Start ():
      if(not guiText):
            Debug.Log("FPS Display needs a GUIText component!")
            enabled = false
      timeleft = updateInterval
   
    def Update ():
      timeleft -= Time.deltaTime
      accum += Time.timeScale/Time.deltaTime
      ++frames
      
      if (timeleft <= 0.0):
            fps = accum/frames
            format = System.String.Format("FPS: {0:F2}", fps);
            guiText.text = format
            
            if(fps < 30):
                guiText.material.color = Color.yellow
            elif(fps < 10):
                guiText.material.color = Color.red
            else:
                guiText.material.color = Color.green
            
            timeleft = updateInterval
            accum = 0.0
            frames = 0直接贴到一个GUIText 上 {:soso__3529053643505418858_2:}

辣条 发表于 2012-8-13 10:44

这个对我真的有帮助!!!

华尔鸡 发表于 2017-3-16 16:49

很不错

blackeagleye 发表于 2017-3-16 17:09

好帖就是要顶

atongmu 发表于 2017-3-16 17:27

很好哦

暮雨琳枫 发表于 2017-3-16 17:41

真心顶

hony511 发表于 2017-3-16 17:47

不错不错

Janmy 发表于 2017-3-16 21:01

不错不错

华尔鸡 发表于 2017-3-16 21:29

楼主是超人
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 如何获取Unity游戏时的FPS?