文档章节

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

大止刀口
 大止刀口
发布于 2017/07/02 20:56
字数 278
阅读 124
收藏 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是幂次数,该值影响环形缓存的大小所以不能太大。

© 著作权归作者所有

大止刀口
粉丝 7
博文 17
码字总数 10107
作品 0
汕头
程序员
私信 提问
加载中

评论(0)

[AR/VR教程] SteamVR Unity工具包(一):概览和控制器事件

Quick Start 快速上手 · Clone this repository git clone https://github.com/thestonefox/SteamVRUnityToolkit.git · Open the SteamVRUnityToolkit within · Import the SteamVR Plugi......

osc_a7rsiqz6
2018/05/24
6
0
深度测试: LayaAir H5游戏引擎裸跑性能超越Unity3D

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

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

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

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

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

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

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

yuri_s8s
2016/12/29
3
0

没有更多内容

加载失败,请刷新页面

加载更多

window下 mongodb开启用户名和密码 权限

在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证。 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。 坏处是,公网服务器搭建MongoDB...

东东笔记
40分钟前
9
0
数据倾斜

数据倾斜: 两种数据倾斜发生的现象: 80%情况下都发生挂了,只有极少20%情况下能把task执行完成 窄依赖:结构简单,如果发生数据丢失,方便查找丢失的数据 宽依赖:结构复杂,如何发生数据丢...

七宝1
今天
20
0
我的jdk源码(十一):ArrayList

一、概述 ArrayList类是AbstractList的子类,实现了具体的add(), set(), remove()等方法。它是一个可调整大小的数组可以用来存放各种形式的数据。 二、源码分析 (1) 类的声明,源码如下: ...

Java觉浅
昨天
24
0
vnc server,vnc server是什么,vnc工具推荐

nc server是一个用来共享linux服务器上资源给其他分布式用户的服务只要再一台linux系统的机器上安装vnc server,然后开启服务,其他机器就可以通过vncviewer访问这台机器上的共享资源,那么今...

兔子m
昨天
20
0
COLA的扩展性使用和源码研究

cola扩展点使用和设计初探 封装变化,可灵活应对程序的需求变化。 扩展点使用 步骤: 定义扩展点接口,类型可以是校验器,转换器,实体; 必须以ExtPt结尾,表示一个扩展点。 比如,我定义一个...

李福春carter
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部