文档章节

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

大止刀口
 大止刀口
发布于 2017/07/02 20:56
字数 278
阅读 29
收藏 0
点赞 0
评论 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
汕头
程序员
#创新实训#VR漫游项目汇报4

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

christina_5 ⋅ 04/15 ⋅ 0

深度测试: LayaAir H5游戏引擎裸跑性能超越Unity3D

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

来亚盒子 ⋅ 2016/08/17 ⋅ 0

木木的Unity学习笔记(四)—— Unity中的柏林噪声(Perlin Noise)

木木的Unity学习笔记(四)—— Unity中的柏林噪声 柏林噪声是一个非常强大算法,经常用于程序生成随机内容,在游戏和其他像电影等多媒体领域广泛应用。算法发明者Ken Perlin也因此算法获得奥...

fumikisama ⋅ 05/06 ⋅ 0

UnityShader源码2017---学习笔记与自我拓展006

源自CubeBlend 首先映入眼帘的是 稍微解释一下[NoScaleOffset]吧,就是在material的面板上没有tilling和offset控制部分的GUI显示。 然后我看到了 这个应该是unity声明的吧,比如想MainTexST...

u012871784 ⋅ 05/29 ⋅ 0

【Unity】多线程和主线程交互使用类——Loom工具分享(转载)

作者:D.S.Qiu 原文:Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享 熟悉Unity的developer都知道在Unity中的线程不能使用Unity的对象,但可以使用Unity的值类型变...

何三思 ⋅ 04/12 ⋅ 0

Unity Memory 内存 官方文档笔记

本文档主要是对Unity官方教程的个人理解与总结(其实以翻译记录为主:>) 仅作为个人学习使用,不得作为商业用途,欢迎转载,并请注明出处。 文章中涉及到的操作都是基于 Unity2017.3版本 参...

cangod ⋅ 04/18 ⋅ 0

关于Unity3D Assets资源目录结构管理

u3d默认目录 ) (插件)不是C#语言写一些插件和库,比如javajsC++,u3d默认目录,u3d是C#编译器,其他语言只有这个目录才能识别 资源,需要动态加载的资源放在这里,打包时在这个文件夹里的所有文件...

lizhenxiqnmlgb ⋅ 05/23 ⋅ 0

Unity2018新功能抢鲜 | C# Job System Ⅱ

本文首发于“洪流学堂”微信公众号。 洪流学堂,让你学Unity快人几步 上一篇文章我们讲了job system,这篇文章来看看如何使用job system以及常见的问题。 Scheduling jobs工作调度 如前一节所...

zhenghongzhi6 ⋅ 04/18 ⋅ 0

学习Mono与Unity3D关系的笔记

Xamarin公司开发的跨平台 .NET运行环境,是.NET框架的另一种实现。区别在于,它可以跨平台。(Unity的跨平台特性依赖于Mono) Mono的组成。 1.C#编译器。 最新的Momo版本(5.0+)c#编译器完全...

lishengxu159 ⋅ 05/05 ⋅ 0

Unity 3D保护案例分享(一)

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。通过uni...

senseshield ⋅ 04/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 45分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部