Unity FPS帧数设置

本文介绍如何在Unity中测量并显示游戏的帧率。如果你遇到错误,可能是因为缺少TextMeshPro插件,该插件在Unity 2018中预装。你可以安装它,或者选择使用常规UI来代替,只需引用AverageFPS即可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的代码能够测速帧率并且显示出来

如果报错的话,可能你没有使用插件TextMeshPro,这是unity2018自带的插件,你可以装一个或者更改使用普通的UI来显示。

引用AverageFPS就行了。

    public int frameRange = 60;
	//被外部引用但不会被修改
	public int AverageFPS { get; private set; }
	//构建缓冲
	// 现在我们需要一个缓冲区来存储多个帧的FPS值,加上一个索引,以便我们知道下一帧数据的放置位置。

	private int[] fpsBuffer;
	private int fpsBufferIndex;

	public int HighestFPS { get; private set; }
	public int LowestFPS { get; private set; }
	// 因为我们刚开始或者因为frameRange已经改变了。然后必须更新缓冲区,之后可以计算平均FPS。
	private void Update()
	{
		if (fpsBuffer == null || fpsBuffer.Length != frameRange)
		{
			InitializeBuffer();
		}

		UpdateBuffer();
		CalculateFPS();
	}

	private void CalculateFPS()
	{
		//计算缓冲区中的平均值
		int sum = 0;
		for (int i = 0; i < frameRange; i++)
		{
			sum += fpsBuffer[i];
		}
		AverageFPS = sum / frameRange;
	}
	//通过将当前FPS存储在当前索引处来完成更新缓冲区,然后递增。
	private void UpdateBuffer()
	{
		fpsBuffer[fpsBufferIndex++] = (int) (1f / Time.unscaledDeltaTime);
		//所以我们可以将索引包装回数组的开头。这样,一旦缓冲区被填满,我们总是用最新的值覆盖最旧的值。
		if (fpsBufferIndex >= frameRange)
		{
			fpsBufferIndex = 0;
		}
	}
	/// <summary>
	/// 初始化此缓冲区时,请确保frameRange至少为1,并将索引设置为0。
	/// </summary>
	void InitializeBuffer()
	{
		if (frameRange <= 0)
		{
			frameRange = 1;
		}

		fpsBuffer = new int[frameRange];
		fpsBufferIndex = 0;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值