public enum DeviceTier { Potato, Low, Medium, High }
public static class DeviceGrader
{
public static DeviceTier GetTier()
{
#if UNITY_IOS
// iOS 比较简单,直接通过 SystemInfo.deviceModel 判断代数
// iPhone14,x 是 iPhone 12 系列
string model = SystemInfo.deviceModel;
if (model.Contains("iPhone14") || model.Contains("iPad13")) return DeviceTier.High;
if (model.Contains("iPhone11") || model.Contains("iPhone12")) return DeviceTier.Medium;
return DeviceTier.Low;
#elif UNITY_ANDROID
string gpu = SystemInfo.graphicsDeviceName; // e.g., "Adreno (TM) 650"
if (gpu.Contains("Adreno"))
{
int series = ExtractNumber(gpu); // 解析出 650, 512 等数字
if (series >= 730) return DeviceTier.High;
if (series >= 640) return DeviceTier.Medium; // 骁龙855
if (series >= 610) return DeviceTier.Low;
return DeviceTier.Potato;
}
else if (gpu.Contains("Mali"))
{
// Mali 命名比较乱 (G71, G72, G76, G77...)
// 通常 G7x MPx, 数字越大越好
if (gpu.Contains("G710") || gpu.Contains("G78")) return DeviceTier.High;
if (gpu.Contains("G77") || gpu.Contains("G76")) return DeviceTier.Medium;
return DeviceTier.Low;
}
return DeviceTier.Low; // 无法识别的默认为低
#else
return DeviceTier.High; // PC 默认高
#endif
}
}