Unity FPS帧数设置

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

如果报错的话,可能你没有使用插件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;
		}
	}
	/// 
	/// 初始化此缓冲区时,请确保frameRange至少为1,并将索引设置为0。
	/// 
	void InitializeBuffer()
	{
		if (frameRange <= 0)
		{
			frameRange = 1;
		}

		fpsBuffer = new int[frameRange];
		fpsBufferIndex = 0;
	}

你可能感兴趣的:(学习笔记)