1
This commit is contained in:
@@ -78,7 +78,7 @@ public class UIHome_BY_SettingPanel : SubUIBase
|
||||
CacheToggleColor(toggle_Fps30);
|
||||
CacheToggleColor(toggle_Fps45);
|
||||
CacheToggleColor(toggle_Fps60);
|
||||
int fps = PlayerPrefs.GetInt("TargetFps", 2);
|
||||
int fps = PlayerPrefs.GetInt("TargetFps", 1);
|
||||
ApplyFps(fps);
|
||||
toggle_Fps30?.onValueChanged.AddListener(a => { if (a) SetFps(0); });
|
||||
toggle_Fps45?.onValueChanged.AddListener(a => { if (a) SetFps(1); });
|
||||
@@ -120,7 +120,11 @@ public class UIHome_BY_SettingPanel : SubUIBase
|
||||
UpdateToggleColor(toggle_QualityLow, level == 0);
|
||||
UpdateToggleColor(toggle_QualityMid, level == 1);
|
||||
UpdateToggleColor(toggle_QualityHigh, level == 2);
|
||||
QualitySettings.SetQualityLevel(level, true);
|
||||
// 关键:applyExpensiveChanges 必须为 false。
|
||||
// URP 下每个画质档位绑定不同 URP Asset,SetQualityLevel(true) 会立即重建渲染管线/重编译 shader,
|
||||
// 瞬间 GPU 负载骤增,在低端显卡/驱动不兼容时触发设备重置导致闪退。
|
||||
// false 表示昂贵更改延迟到安全时机(下一帧)应用,避免闪退。
|
||||
QualitySettings.SetQualityLevel(level, false);
|
||||
}
|
||||
|
||||
private void SetFps(int level)
|
||||
@@ -138,13 +142,12 @@ public class UIHome_BY_SettingPanel : SubUIBase
|
||||
UpdateToggleColor(toggle_Fps30, level == 0);
|
||||
UpdateToggleColor(toggle_Fps45, level == 1);
|
||||
UpdateToggleColor(toggle_Fps60, level == 2);
|
||||
// 关键:vSyncCount != 0 会让 Application.targetFrameRate 失效(被屏幕刷新率覆盖)。
|
||||
// Balanced/High Fidelity 画质默认 vSyncCount=1,必须强制关闭才能让帧率档位生效。
|
||||
QualitySettings.vSyncCount = 0;
|
||||
// 中高档统一为 60 帧。移动端强制垂直同步,45 不可用(60Hz 整数倍才合法),
|
||||
// 故中档(45)也直接按 60 处理,避免闪退。
|
||||
switch (level)
|
||||
{
|
||||
case 0: Application.targetFrameRate = 30; break;
|
||||
case 1: Application.targetFrameRate = 45; break;
|
||||
case 1:
|
||||
case 2: Application.targetFrameRate = 60; break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user