2021-12-14【c#】环形数组存储
2021-12-14 本文已影响0人
持刀的要迟到了
用途:计算网络帧数据的fps
private bool serverFpsDataInited = false;
private const int c_ServerFpsFrmcount = 50; //记录n帧后开始使用这个帧率,否则使用预期的帧率
private const float c_OneDivServerFpsFrmcount = 1f / c_ServerFpsFrmcount; //记录20帧后开始使用这个帧率,否则使用预期的帧率
private readonly static float[] c_ServerFpsFrmTimes = new float[c_ServerFpsFrmcount]; // 环形计时队列,计算server fps
private int m_ServerFpsTimePointer = 0;
[SerializeField] private float serverRecvTimeReal; // 真实的平均帧速率
/// <summary>
/// 计算接收帧速率,该速率为本地认可的服务器真实平均帧速率
/// </summary>
private void CalculateServerRecvFps()
{
c_ServerFpsFrmTimes[m_ServerFpsTimePointer] = Time.time;
//Debug.LogError(">> " + m_ServerFpsTimePointer + " " + c_ServerFpsFrmTimes[m_ServerFpsTimePointer]);
m_ServerFpsTimePointer++;
if (m_ServerFpsTimePointer == c_ServerFpsFrmcount)
{
m_ServerFpsTimePointer = 0;
}
if (serverFpsDataInited)
{
serverRecvTimeReal = (Time.time - c_ServerFpsFrmTimes[m_ServerFpsTimePointer]) * c_OneDivServerFpsFrmcount;
//Debug.LogError(m_ServerFpsTimePointer + " " + c_ServerFpsFrmTimes[m_ServerFpsTimePointer]);
}
else
{
if (m_ServerFpsTimePointer == 0) serverFpsDataInited = true;
serverRecvTimeReal = ServerSimulateTimeExpect; // 没初始化好
}
}