Unity3D FPS帧数修改实现详解

http://www.yxkfw.com/?p=11620

1、在Quality(质量)设置里把帧数设定关闭image之后才能在代码中修改游戏运行的帧数

 

2、在Unity中新建脚本UpdateFrame.cs ,编写如下代码

复制代码
using UnityEngine;
using System.Collections;

/// 
/// 功能:修改游戏FPS
/// 
public class UpdateFrame : MonoBehaviour
{
    //游戏的FPS,可在属性窗口中修改
    public int targetFrameRate = 300;
    
    //当程序唤醒时
    void Awake ()
    {
        //修改当前的FPS
        Application.targetFrameRate = targetFrameRate;
    }
    
}
复制代码


3、把该代码及ShowFPS.js绑定在层次视图的任一GameObject上,运行游戏,即可以Game视图中看到当前的FPS,同时可修改targetFrameRate变量来观看结果

ShowFPS.js代码

@script ExecuteInEditMode
 
private var gui : GUIText;
 
private var updateInterval = 1.0;
private var lastInterval : double; // Last interval end time
private var frames = 0; // Frames over current interval
 
function Start()
{
    lastInterval = Time.realtimeSinceStartup;
    frames = 0;
}
 
function OnDisable ()
{
    if (gui)
        DestroyImmediate (gui.gameObject);
}
 
function Update()
{
#if !UNITY_FLASH
    ++frames;
    var timeNow = Time.realtimeSinceStartup;
    if (timeNow > lastInterval + updateInterval)
    {
        if (!gui)
        {
            var go : GameObject = new GameObject("FPS Display", GUIText);
            go.hideFlags = HideFlags.HideAndDontSave;
            go.transform.position = Vector3(0,0,0);
            gui = go.guiText;
            gui.pixelOffset = Vector2(5,55);
        }
        var fps : float = frames / (timeNow - lastInterval);
        var ms : float = 1000.0f / Mathf.Max (fps, 0.00001);
        gui.text = ms.ToString("f1") + "ms " + fps.ToString("f2") + "FPS";
        frames = 0;
        lastInterval = timeNow;
    }
#endif
}



http://www.narkii.com/club/thread-350654-1.html

1.首先在工程中新建一个js脚本,双击该脚本进行编辑,代码如下
  1. var updateInterval = 0.5;

  2. private var accum = 0.0; // Fps accumulated over the interval
  3. private var frames = 0; // Frames drawn over the interval
  4. private var timeleft : float; // Left time for current interval

  5. function Start()
  6. {
  7. if( !guiText )
  8. {
  9. print ("FramesPerSecond needs a GUIText component!");
  10. enabled = false;
  11. return;
  12. }
  13. timeleft = updateInterval;
  14. }

  15. function Update()
  16. {
  17. timeleft -= Time.deltaTime;
  18. accum += Time.timeScale/Time.deltaTime;
  19. ++frames;

  20. // Interval ended - update GUI text and start new interval
  21. if( timeleft <= 0.0 )
  22. {
  23. // display two fractional digits (f2 format)
  24. guiText.text = "" + (accum/frames).ToString("f2");
  25. timeleft = updateInterval;
  26. accum = 0.0;
  27. frames = 0;
  28. }
  29. }
复制代码
2.写好后加入到GUItext即可


你可能感兴趣的:(Unity3D FPS帧数修改实现详解)