// Copyright (c) 2015 hugula // direct https://github.com/tenvick/hugula // using UnityEngine; using System.Collections; public class ProfilerPanel : MonoBehaviour { const float m_KBSize = 1024.0f * 1024.0f; private string memory, framerate; private float updateInterval = 0.2F; private float accum = 0; // FPS accumulated over the interval private int frames = 0; // Frames drawn over the interval private float timeleft; // Left time for current interval void Start() { timeleft = updateInterval; //memory = Util.Get(gameObject, "MemoryInfo"); //framerate = Util.Get(gameObject, "FrameRate"); } void Update() { UpdateGameInfo(); } void OnGUI() { GUILayout.Label("fps:" + framerate); GUILayout.Label("" + memory); } /// /// 更新游戏信息 /// void UpdateGameInfo() { float totalMemory = (float)(UnityEngine.Profiling.Profiler.GetTotalAllocatedMemoryLong() / m_KBSize); float totalReservedMemory = (float)(UnityEngine.Profiling.Profiler.GetTotalReservedMemoryLong() / m_KBSize); float totalUnusedReservedMemory = (float)(UnityEngine.Profiling.Profiler.GetTotalUnusedReservedMemoryLong() / m_KBSize); float monoHeapSize = (float)(UnityEngine.Profiling.Profiler.GetMonoHeapSizeLong() / m_KBSize); float monoUsedSize = (float)(UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong() / m_KBSize); timeleft -= Time.deltaTime; accum += Time.timeScale / Time.deltaTime; ++frames; // Interval ended - update GUI text and start new interval if (timeleft <= 0.0) { // display two fractional digits (f2 format) float fps = accum / frames; framerate = fps.ToString();// ioo.f("fps:{0:F2}", fps); //if (fps < 30) { // framerate.color = Color.yellow; //} else { // if (fps < 10) { // framerate.color = Color.red; // } else { // framerate.color = Color.green; // } //} timeleft = updateInterval; accum = 0.0F; frames = 0; } memory = string.Format("TotalAllocatedMemory:{0}MB\n" + //TotalAllocatedMemory "TotalReservedMemory:{1}MB\n" + "TotalUnusedReservedMemory:{2}MB\n" + "MonoHeapSize:{3}MB\nMonoUsedSize:{4}MB", totalMemory, totalReservedMemory, totalUnusedReservedMemory, monoHeapSize, monoUsedSize); } }