using System;
public class Class1:MonoBehaviour
{
private const long updateInternalTicks = 2000 * System.TimeSpan.TicksPerMilliseconds;
private long lastTicks;
private int frames = 0;
private static int maxFpsRecords = 5;
private static int curFpsRecordIndex = 0;
private static List<int> fpsRecords = new List<int>(maxFpsRecords);
public static int curFps = 30;
public GameObject Root_UGUI;
public Text Text_FPS;
public Text Text_Version;
public Text Text_Quality;
#if DISPLAY_FPS
EGameQuality mCurrentQuality = EGameQuality.eMidQuality;
#endif
void Start()
{
lastTicks = System.DateTime.Now.Ticks;
#if DISPLAY_FPS
Root_UGUI.SetActive(true);
Text_Version.text = ApplicationMain.RunTimeAppVersion;
SetQuality();
#else
Root_UGUI.SetActive(false);
#endif
}
void Update()
{
++frames;
long currTicks = System.DateTime.Now.Ticks;
if(currTicks > lastTicks + updateIntervalTicks)
{
curFps = (int)(frames * System.TimeSpan.TicksPerSecond / (currTicks - lastTicks));
RecordFps(curFps);
frames = 0;
lastTicks = currTicks;
}
#if DISPLAY_FPS
if(mCurrentQuality != GameQualityManager.Instance.CurrentQuality)
{
mCurrentQuality = GameQualityManager.Instance.CurrentQuality
}
SetQuality();
#endif
}
#if DISPLAY_FPS
void SetQuality()
{
switch(mCurrentQuality)
{
case EGameQuality.eHighQuality:
Text_Quality.text = "H";
break;
case EGameQuality.eMidQuality:
Text_Quality.text = "M";
break;
case EGameQuality.eLowQuality:
Text_Quality.text = "L";
break;
}
}
#endif
private void RecordFps(int val)
{
if(fpsRecords.Count > curFpsRecordIndex)
{
fpsRecords[curFpsRecordIndex] = val;
}
else
{
fpsRecords.Add(val);
}
curFpsRecordIndex = (curFpsRecordIndex++) % maxFpsRecords;
#if DISPLAY_FPS
Text_FPS.text = "fps:"+curFps;
#endif
}
public static int GetAverageFps() //获取一段时间的平均fps
{
if(fpsRecords.Count > 0)
{
int totalFps = 0;
for(int i=0; i<fpsRecords.Count; ++i)
{
totalFps += fpsRecords[i];
}
return totalFps / fpsRecords.Count;
}
return curFps;
}
public class Class1:MonoBehaviour
{
private const long updateInternalTicks = 2000 * System.TimeSpan.TicksPerMilliseconds;
private long lastTicks;
private int frames = 0;
private static int maxFpsRecords = 5;
private static int curFpsRecordIndex = 0;
private static List<int> fpsRecords = new List<int>(maxFpsRecords);
public static int curFps = 30;
public GameObject Root_UGUI;
public Text Text_FPS;
public Text Text_Version;
public Text Text_Quality;
#if DISPLAY_FPS
EGameQuality mCurrentQuality = EGameQuality.eMidQuality;
#endif
void Start()
{
lastTicks = System.DateTime.Now.Ticks;
#if DISPLAY_FPS
Root_UGUI.SetActive(true);
Text_Version.text = ApplicationMain.RunTimeAppVersion;
SetQuality();
#else
Root_UGUI.SetActive(false);
#endif
}
void Update()
{
++frames;
long currTicks = System.DateTime.Now.Ticks;
if(currTicks > lastTicks + updateIntervalTicks)
{
curFps = (int)(frames * System.TimeSpan.TicksPerSecond / (currTicks - lastTicks));
RecordFps(curFps);
frames = 0;
lastTicks = currTicks;
}
#if DISPLAY_FPS
if(mCurrentQuality != GameQualityManager.Instance.CurrentQuality)
{
mCurrentQuality = GameQualityManager.Instance.CurrentQuality
}
SetQuality();
#endif
}
#if DISPLAY_FPS
void SetQuality()
{
switch(mCurrentQuality)
{
case EGameQuality.eHighQuality:
Text_Quality.text = "H";
break;
case EGameQuality.eMidQuality:
Text_Quality.text = "M";
break;
case EGameQuality.eLowQuality:
Text_Quality.text = "L";
break;
}
}
#endif
private void RecordFps(int val)
{
if(fpsRecords.Count > curFpsRecordIndex)
{
fpsRecords[curFpsRecordIndex] = val;
}
else
{
fpsRecords.Add(val);
}
curFpsRecordIndex = (curFpsRecordIndex++) % maxFpsRecords;
#if DISPLAY_FPS
Text_FPS.text = "fps:"+curFps;
#endif
}
public static int GetAverageFps() //获取一段时间的平均fps
{
if(fpsRecords.Count > 0)
{
int totalFps = 0;
for(int i=0; i<fpsRecords.Count; ++i)
{
totalFps += fpsRecords[i];
}
return totalFps / fpsRecords.Count;
}
return curFps;
}