using UnityEngine; namespace Byway.Quality { /// /// Hardware stats to identify performance index of device /// public class HardwareStats { /// /// Name of device model /// /// public string DeviceModel { get; internal set; } /// /// Memory size of GPU in MegaBytes /// Return zero on editor /// public int GpuMemorySizeMb { get; internal set; } /// /// Name of GPU /// /// public string GpuName { get; internal set; } /// /// Major series of GPU /// public GpuMajorSeries GpuMajorSeries { get; internal set; } /// /// Major series of GPU /// public GpuMinorSeries GpuMinorSeries { get; internal set; } /// /// Series number of GPU. /// ex: Adreno 650 -> 650 /// public int GpuSeriesNumber { get; internal set; } /// /// Name of SoC /// Only available on Android12 or later /// public string SocName { get; internal set; } /// /// Memory size of system in MegaBytes /// Return zero on editor /// public int SystemMemorySizeMb { get; internal set; } internal static HardwareStats CreateDefault() { return new HardwareStats { DeviceModel = SystemInfo.deviceModel, GpuName = SystemInfo.graphicsDeviceName, GpuMemorySizeMb = SystemInfo.graphicsMemorySize, GpuMajorSeries = GpuMajorSeries.Unknown, GpuMinorSeries = GpuMinorSeries.Unknown, GpuSeriesNumber = 0, SocName = "", SystemMemorySizeMb = SystemInfo.systemMemorySize }; } } public static class HardwareInfo { // singleton cache private static HardwareStats _cachedHardwareStats; /// /// Get hardware stats of running device /// /// HardwareStats public static HardwareStats GetHardwareStats() { if (_cachedHardwareStats != null) return _cachedHardwareStats; _cachedHardwareStats = HardwareStats.CreateDefault(); #if UNITY_EDITOR_OSX || UNITY_IOS HardwareInfoIos.SetIosHardwareStats(_cachedHardwareStats); #elif UNITY_ANDROID HardwareInfoAndroid.SetAndroidHardwareStats(_cachedHardwareStats); #endif return _cachedHardwareStats; } } }