文档章节

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

大止刀口
 大止刀口
发布于 2017/07/02 20:56
字数 278
阅读 33
收藏 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
汕头
程序员
Unity3d-通过简单示例来理解Time.deltaTime

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

zzRoger
10/08
0
0
#创新实训#VR漫游项目汇报4

1.有关游戏优化技术的详细整理 带宽优化 减少纹理大小 其中和优化相关的主要有“Generate Mip Maps”、“Max Size”和“Format”几个选项。 “Generate Mip Maps”会为同一张纹理创建出很多不...

christina_5
04/15
0
0
深度测试: LayaAir H5游戏引擎裸跑性能超越Unity3D

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

来亚盒子
2016/08/17
1K
0
【Unity3D技术文档翻译】第3.1篇 光照概述

上一章:【Unity3D技术文档翻译】第3.0篇 光照总览 & 灯光 本章原文所在章节:【Unity Manual】→【Graphics】→【Graphics Overview】→【Lighting】→【Lighting overview】 光照概述 为了...

何三思
07/01
0
0
【Unity3D基础概念】给初学者看的Unity概览(一):GameObject,Compoent,Time,Input,Physics

点击进入我的新博客 作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明。如果你喜欢这篇文章,请点推荐。谢谢! Unity3D重要模块的类图 最近刚刚完成了一个...

王选易
2014/05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
14
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
1
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部