[Unity3D]查看与设置游戏帧数FPS

FPS是衡量游戏性能的一个重要指标,Unity是跨平台的引擎工具,所以没有统一限定他的帧速率。

在PC平台,一般说来是越高越好,FPS越高,游戏越流畅。

在手机平台,普遍的流畅指标为60帧,能跑到60帧,就是非常流畅的体验了,再高的话一来差别很小,二来帧数太高,会耗费CPU和GPU,会导致发热和耗电量大。

1.UNITY3D设置帧数FPS的方法

3.5以后的版本,可以直接设置Application.targetFrameRate。直接修改脚本就可以了。

using UnityEngine;

using System.Collections;

public class SetFPS : MonoBehaviour {

void Awake() {

Application.targetFrameRate = 60;//此处限定60帧

}

}

默认参数为-1,这个时候所有平台中游戏都会尽可能快地渲染,在WEB平台上最高是50~60帧。

需要注意的是在Edit/Project Setting/QualitySettings下,若vsync被设置了,则targetFrameRate设置的将无效。两者是冲突关系。具体看下面的脚本介绍,最新的地址:

http://docs.unity3d.com/Documentation/ScriptReference/Application-targetFrameRate.html

2.怎么查看当前帧数FPS?

using UnityEngine;
using System.Collections;

[System.Reflection.Obfuscation(Exclude = true)]
public class DebugScreen : MonoBehaviour {

	// Use this for initialization
	void Start () {

	}

	// Update is called once per frame
	void Update () {
        UpdateTick();
	}

    void OnGUI()
    {
        DrawFps();
    }

    private void DrawFps()
    {
        if (mLastFps > 50)
        {
            GUI.color = new Color(0, 1, 0);
        }
        else if (mLastFps > 40)
        {
            GUI.color = new Color(1, 1, 0);
        }
        else
        {
            GUI.color = new Color(1.0f, 0, 0);
        }

        GUI.Label(new Rect(50, 32, 64, 24), "fps: " + mLastFps);

    }

    private long mFrameCount = 0;
    private long mLastFrameTime = 0;
    static long mLastFps = 0;
    private void UpdateTick()
    {
        if (true)
        {
            mFrameCount++;
            long nCurTime = TickToMilliSec(System.DateTime.Now.Ticks);
            if (mLastFrameTime == 0)
            {
                mLastFrameTime = TickToMilliSec(System.DateTime.Now.Ticks);
            }

            if ((nCurTime - mLastFrameTime) >= 1000)
            {
                long fps = (long)(mFrameCount * 1.0f / ((nCurTime - mLastFrameTime) / 1000.0f));

                mLastFps = fps;

                mFrameCount = 0;

                mLastFrameTime = nCurTime;
            }
        }
    }
    public static long TickToMilliSec(long tick)
    {
        return tick / (10 * 1000);
    }
}
时间: 2024-10-07 15:36:47

[Unity3D]查看与设置游戏帧数FPS的相关文章

cocos2d-js中怎么去掉左下角的三行数字(即帧数FPS)

最近简单玩了一下cocos2d-js,用模版写了一下代码,发现左下角的数字不知如何去掉,查了资料也不知道在哪个地方修改. 经过一番探索终于在cocos2d的core包根目录下找到CCDirector.js这个文件.在里面找到 cc.Director._fpsImageLoaded = true,把true改为false即可. -------------- 发现了原来在cocos2d.js改更合适:

视频分辨率与帧数

1080i格式,分辨率为1920×1080i/60Hz,行频为33.75kHz  720p格式,分辨率为1280×720p/60Hz,行频为45kHz  480P 格式 分辨率是720*480 帧数就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示.每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象.高的帧率可以得到更流畅.更逼真的动画.每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅. 一般来说30fp

Unity3D基础--动态创建和设置游戏对象

转载自原文:http://m.blog.csdn.net/blog/smbroe/43488627 1.如何动态创建对象:调用GameObject的CreatePrimitive方法可以按模型进行创建,PrimitiveType中可选的模型有,Cube(立方体),Sphere(球体),Capsule(胶囊),Plane(平原),Cylinder(圆柱):创建出的对象不需要Add之类的就可以显示出来 GameObject cubeObject = GameObject.CreatePrimitiv

基于Unity3d 引擎的Android游戏优化(转)

转载源:http://www.manew.com/thread-47240-1-1.html 最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是上,试过几款手机,从低端到高端,发现性能还是很差,所以又花了几天来研究摸索,终于把游戏性能搞定.记录下来,留作以后参考. 1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他

克服VR眩晕之帧数 提升UE4内容实时渲染效率

克服VR眩晕之帧数:提升UE4内容实时渲染效率 Li Wen Lei, HuNing 在 2015/10/29 23:00:31 | 新闻 Share on Facebook Share on Twitter Share on Google+ Share on LinkedIn VR已经成为了当今最火热的一个话题,带上头盔之后,从此进入一个奇妙的世界,在这里你不再是观众,你参与这个世界发生的每一件事件.整个世界从此与众不同.在赛道上飞驰,在战场上纵横     但是生理机制让我们的大脑在身体并没有

Android游戏开发之游戏帧动画的播放与处理

带你走进游戏开发的世界之游戏帧动画的处理<ignore_js_op> 1.帧动画的原理 帧动画帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧的切换罢了.            如图所示:人物行走动画的实现方式, 4帧行走动画在播放区域 一帧一帧向左切换播放 给人们一种播放动画的假象 ,图片就动了起来, 很简单吧,其它三方向播放动画的方法类似我就不再一一举例

Unity3d平台信息设置

[Unity3d平台信息设置] 通过"Edit" -> "Project Settings" -> "Player"菜单选项.打开平台信息设置窗口.在Inspector视图中可以进行游戏平台的相关设置. 在这可以设置开发公司的名称.程序名称和默认程序图标等. Unity3d平台信息设置

vertica 设置最大会话数

默认会话数最大值55,如果超过了,就会报如下错误: com.vertica.support.exceptions.NonTransientConnectionException: [Vertica][VJDBC](4060) FATAL: New session rejected due to limit, already 55 sessions active 查看最大会话数: SELECT GET_CONFIG_PARAMETER ('MaxClientSessions'); 设置最大会话数:

Opencv:按帧数读取视频并保存图片

import cv2 videoFile = 'data/最强大脑.mp4' cap = cv2.VideoCapture(videoFile) frameNum = 0 while (cap.isOpened()): ret, frame = cap.read() frameNum = frameNum + 1 if frameNum % 2 == 0: # 调整帧数 cv2.imwrite('image/output/vieo1_' + str(frameNum) + ".jpg"