YanCheng_Metrology/Assets/Framework/Scripts/Runtime/Module/Module.Console/ApplicationWindow.cs

141 lines
5.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Profiling;
namespace MotionFramework.Console
{
[ConsoleAttribute("应用详情", 102)]
internal class ApplicationWindow : IConsoleWindow
{
// GUI相关
private Vector2 _scrollPos = Vector2.zero;
private int _timeScaleLevel = 5;
void IConsoleWindow.OnGUI()
{
int space = 15;
_scrollPos = ConsoleGUI.BeginScrollView(_scrollPos);
// 时间缩放相关
GUILayout.Space(space);
GUILayout.BeginHorizontal();
if (GUILayout.Button("Reset", ConsoleGUI.ButtonStyle, GUILayout.Width(100)))
{
_timeScaleLevel = 5;
SetTimeScale(_timeScaleLevel);
}
if (GUILayout.Button("+", ConsoleGUI.ButtonStyle, GUILayout.Width(100)))
{
_timeScaleLevel++;
_timeScaleLevel = Mathf.Clamp(_timeScaleLevel, 0, 9);
SetTimeScale(_timeScaleLevel);
}
if (GUILayout.Button("-", ConsoleGUI.ButtonStyle, GUILayout.Width(100)))
{
_timeScaleLevel--;
_timeScaleLevel = Mathf.Clamp(_timeScaleLevel, 0, 9);
SetTimeScale(_timeScaleLevel);
}
GUILayout.EndHorizontal();
GUILayout.Space(space);
ConsoleGUI.Lable($"Elapse Time : {GetElapseTime()}");
ConsoleGUI.Lable($"Time Scale : {Time.timeScale}");
GUILayout.Space(space);
ConsoleGUI.Lable($"Unity Version : {Application.unityVersion}");
ConsoleGUI.Lable($"Unity Pro License : {Application.HasProLicense()}");
ConsoleGUI.Lable($"Application Version : {Application.version}");
ConsoleGUI.Lable($"Application Install Path : {Application.dataPath}");
ConsoleGUI.Lable($"Application Persistent Path : {Application.persistentDataPath}");
GUILayout.Space(space);
ConsoleGUI.Lable($"OS : {SystemInfo.operatingSystem}");
ConsoleGUI.Lable($"OS Memory : {SystemInfo.systemMemorySize / 1024f:f1}GB");
ConsoleGUI.Lable($"CPU : {SystemInfo.processorType}");
ConsoleGUI.Lable($"CPU Core : {SystemInfo.processorCount}");
GUILayout.Space(space);
ConsoleGUI.Lable($"Device UID : {SystemInfo.deviceUniqueIdentifier}");
ConsoleGUI.Lable($"Device Model : {SystemInfo.deviceModel}");
ConsoleGUI.Lable($"Device Name : {SystemInfo.deviceName}");
ConsoleGUI.Lable($"Device Type : {SystemInfo.deviceType}");
GUILayout.Space(space);
ConsoleGUI.Lable($"Graphics Device Name : {SystemInfo.graphicsDeviceName}");
ConsoleGUI.Lable($"Graphics Device Type : {SystemInfo.graphicsDeviceType}");
ConsoleGUI.Lable($"Graphics Memory : {SystemInfo.graphicsMemorySize / 1024f:f1}GB");
ConsoleGUI.Lable($"Graphics Shader Level : {SystemInfo.graphicsShaderLevel}");
ConsoleGUI.Lable($"Multi-threaded Rendering : {SystemInfo.graphicsMultiThreaded}");
ConsoleGUI.Lable($"Max Cubemap Size : {SystemInfo.maxCubemapSize}");
ConsoleGUI.Lable($"Max Texture Size : {SystemInfo.maxTextureSize}");
GUILayout.Space(space);
ConsoleGUI.Lable($"Supports Accelerometer : {SystemInfo.supportsAccelerometer}"); //加速计硬件
ConsoleGUI.Lable($"Supports Gyroscope : {SystemInfo.supportsGyroscope}"); //陀螺仪硬件
ConsoleGUI.Lable($"Supports Audio : {SystemInfo.supportsAudio}"); //音频硬件
ConsoleGUI.Lable($"Supports GPS : {SystemInfo.supportsLocationService}"); //GPS硬件
GUILayout.Space(space);
ConsoleGUI.Lable($"Screen DPI : {Screen.dpi}");
ConsoleGUI.Lable($"Game Resolution : {Screen.width} x {Screen.height}");
ConsoleGUI.Lable($"Device Resolution : {Screen.currentResolution.width} x {Screen.currentResolution.height}");
ConsoleGUI.Lable($"Graphics Quality : {QualitySettings.names[QualitySettings.GetQualityLevel()]}");
GUILayout.Space(space);
ConsoleGUI.Lable($"Total Memory : {GetTotalMemory() / 1048576}MB");
ConsoleGUI.Lable($" - Unity Memory : {Profiler.GetTotalReservedMemoryLong() / 1048576}MB");
ConsoleGUI.Lable($" - Mono Memory : {Profiler.GetMonoHeapSizeLong() / 1048576}MB");
ConsoleGUI.Lable($" - GfxDriver Memory : {Profiler.GetAllocatedMemoryForGraphicsDriver() / 1048576}MB");
GUILayout.Space(space);
ConsoleGUI.Lable($"Battery Level : {SystemInfo.batteryLevel}");
ConsoleGUI.Lable($"Battery Status : {SystemInfo.batteryStatus}");
ConsoleGUI.Lable($"Network Status : {GetNetworkState()}");
ConsoleGUI.EndScrollView();
}
private long GetTotalMemory()
{
// Total: Unity+Mono+GfxDriver未包含Audio+Video
return Profiler.GetTotalReservedMemoryLong() + Profiler.GetMonoHeapSizeLong() + Profiler.GetAllocatedMemoryForGraphicsDriver();
}
private string GetNetworkState()
{
string internetState = string.Empty;
if (Application.internetReachability == NetworkReachability.NotReachable)
internetState = "not reachable";
else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork)
internetState = "carrier data network";
else if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
internetState = "local area network";
return internetState;
}
private string GetElapseTime()
{
int day = (int)(Time.realtimeSinceStartup / 86400f);
int hour = (int)((Time.realtimeSinceStartup % 86400f) / 3600f);
int sec = (int)(((Time.realtimeSinceStartup % 86400f) % 3600f) / 60f);
return $"{day}天{hour}小时{sec}分";
}
private void SetTimeScale(int timeScaleLevel)
{
if (timeScaleLevel == 5)
{
Time.timeScale = 1f;
}
else if (timeScaleLevel > 5)
{
Time.timeScale = timeScaleLevel - 4;
}
else
{
Time.timeScale = timeScaleLevel / 5f;
}
}
}
}