文档章节

Unity笔记(A):FPS帧率计数

大止刀口
 大止刀口
发布于 2017/07/02 20:56
字数 278
阅读 39
收藏 0

Unity里C#实现一个简单的帧率计数器:

public class FPSCounter : MonoBehaviour
{
    private const int LEVEL = 5;
    private const int NUMBER = 1 << LEVEL;
    private const int MASK = NUMBER - 1;
    [SerializeField]
    private Text text;
    private int index = 0;
    private float counter = 0.0f;
    private float[] memory = new float[NUMBER];

    void Update()
    {
        index = (index + 1) & MASK;
        counter -= memory[index];
        counter += Time.deltaTime;
        memory[index] = Time.deltaTime;
        text.text = (NUMBER / counter).ToString();
    }
}

 

这个计数器需要一个UGUI的Text控件text以显示帧率,在Inspector面板设置这个text。

分析:

这个计数器构建一个环形缓存,在每帧的Update里按如下方式计数:

1.弹出环形缓存最旧的一个值(该值是很多帧以前的deltaTime),counter减去该值。

2.获取当前帧的deltaTime,counter累加deltaTime,同时把deltaTime压入环形缓存。

3.计算帧率,环形缓存的大小NUMBER(即总帧数)除以counter(即总时间)得到帧率。

注:

1.环形缓存用求余来保证索引不越界

2.由于求2的幂的余可以用按位与(&)代替,所以LEVEL是幂次数,该值影响环形缓存的大小所以不能太大。

© 著作权归作者所有

共有 人打赏支持
大止刀口
粉丝 6
博文 17
码字总数 10107
作品 0
汕头
程序员
私信 提问
深度测试: LayaAir H5游戏引擎裸跑性能超越Unity3D

深度测试: LayaAir H5游戏引擎裸跑性能超越Unity3D 《醉西游》H5版的出现,让游戏行业认识到HTML5 已经具备实现APP级的MMORPG类型的大型重度游戏的能力。LayaBox旗下第二代H5游戏引擎LayaA...

来亚盒子
2016/08/17
1K
0
Unity3d-通过简单示例来理解Time.deltaTime

转载文章: Unity3d-通过简单示例来理解Time.deltaTime 在初学Unity3d时就不时会用上Time.deltaTime这个变量,初学Unity时不是很懂这个这个变量,那时的理解仅限于“要让数值按每秒多少进行变...

zzRoger
10/08
0
0
Blend4Web vs Unity: WebGL 的性能比较

编者序言 这篇文章最初在 Habrahabr发表 ,它是一个流行于 IT 专业人员的俄罗斯网站。这个主题主题引发了成千上万读者的兴趣并留下了几十个评论。我们很乐意的介绍这个关于 Unity WebGL 和 ...

yuri_s8s
2016/12/29
0
0
Blend4Web vs Unity: WebGL 的性能比较

编者序言 这篇文章最初在 Habrahabr发表 ,它是一个流行于 IT 专业人员的俄罗斯网站。这个主题主题引发了成千上万读者的兴趣并留下了几十个评论。我们很乐意的介绍这个关于 Unity WebGL 和 ...

yuri_s8s
2016/12/29
0
0
unity3d Drawcall优化方法

unity3D 对于移动平台的支持无可厚非,但是也有时候用3D 开发出来的应用、游戏在移动终端上的运行有着明显的效率问题,比如卡、画质等各种问题。自己在做游戏开发的时候偶有所得。对于主要影...

咖喱酱_zero
2016/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部