Unity中固定窗口宽高设置失效及Screen相关值异常求助
解决Unity窗口宽高设置无效及Screen属性值不一致问题
窗口设置不生效的修复方案
分场景设置分辨率
编辑阶段修改Edit > Project Settings > Player > Resolution and Presentation中的默认分辨率后,需重启Unity或重新进入Play模式才会生效;运行时动态调整必须调用Screen.SetResolution(),参数要传全:// 示例:设置窗口为1920x1080窗口化模式 Screen.SetResolution(1920, 1080, false);若勾选了
Resizable Window选项,系统或Unity布局可能限制窗口尺寸,导致设置失效,建议取消该选项。排查UI适配问题
若只是UI显示异常而非窗口尺寸未生效,检查Canvas的Render Mode和Canvas Scaler:使用Scale With Screen Size时,需保证Reference Resolution与目标窗口尺寸匹配。
Screen属性值不一致的原因与处理
属性定义差异
Screen.currentResolution返回的是显示器原生分辨率,Screen.width/height是当前游戏窗口的实际尺寸——全屏时两者一致,窗口化时自然不同,先确认当前的显示模式。延迟获取避免初始化问题
在Awake()中直接获取Screen属性可能因Unity未完成窗口初始化导致值不准确,建议在Start()或延迟一帧获取:void Start() { Invoke(nameof(FetchScreenInfo), 0.1f); } void FetchScreenInfo() { Debug.Log($"窗口尺寸: {Screen.width}x{Screen.height}"); Debug.Log($"显示器分辨率: {Screen.currentResolution.width}x{Screen.currentResolution.height}"); }多显示器场景处理
连接多显示器时,Screen.currentResolution对应主显示器分辨率,若窗口在副显示器,两者会不一致,需通过Display.displays操作对应显示器:if (Display.displays.Length > 1) { // 激活副显示器并设置分辨率 Display.displays[1].Activate(1280, 720); }
额外排查项
- 检查是否有其他脚本(如第三方插件、相机适配逻辑)覆盖了分辨率设置;
- 旧版Unity(2019.x及更早)存在窗口设置bug,建议升级至稳定版本。
内容的提问来源于stack exchange,提问作者Newboy11
相关产品推荐
相关产品推荐

