141 lines
5.4 KiB
C#
141 lines
5.4 KiB
C#
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
} |