You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 11:10:09