【问题标题】:Unity - Window size depending on Screen sizeUnity - 窗口大小取决于屏幕大小
【发布时间】:2017-02-28 01:34:28
【问题描述】:

我希望我的游戏具有 1:1 的纵横比,但可以放大到一定的比例。这意味着宽度和高度必须相同,但不能大于实际屏幕尺寸。最重要的是,为确保像素大小一致,宽度和高度值必须是 2 的幂。

我在确定所需值时没有任何问题。

int value = 2;
int limit = Screen.currentResolution.height;
while (value * 2 < limit) value *= 2;
Debug.Log(value);

我宁愿不知道如何在启动图像显示之前设置窗口大小。有没有办法做到这一点?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    是的,有,但这意味着您需要摆脱启动窗口。

    原因是,如果您启用启动窗口(您可以从中选择分辨率、质量、窗口或全屏模式等),Unity 将显示显卡可用的分辨率 - 并且这意味着没有可用的 1:1 纵横比分辨率。

    因此,为了做到这一点,您需要按如下方式设置播放器设置:

    重要的部分是禁用Display Resolution Dialog。 然后通过禁用Default Is Native Resolution 来设置Default Screen WidthHeight

    请注意,单机版将在开始时强制使用此分辨率,并且仅此分辨率 - 在初始屏幕之后,您可以通过从加载的第一个场景中的任何脚本调用 Screen.SetResolution 方法来设置所需的任何分辨率。 当然,您可以通过取消勾选/勾选Default Is Full Screen 选项,以窗口或全屏模式使独立启动。

    差不多就是这样,如果您想让用户从 1:1 的 AR 分辨率列表中进行选择,您目前还做不到。

    编辑:播放器设置的分辨率信息存储在HKEY_CURRENT_USER\Software\[YourCompanyName]\[YourGameName] 内的注册表中。 三个键是:

    Screenmanager Is Fullscreen mode
    Screenmanager Resolution Height
    Screenmanager Resolution Width
    

    要在运行时从游戏内部更改这些,您需要使用:

    PlayerPrefs.SetInt("Screenmanager Is Fullscreen mode", [0/1]);
    PlayerPrefs.SetInt("Screenmanager Resolution Height", [HeighthRes]);
    PlayerPrefs.SetInt("Screenmanager Resolution Width", [WidthRes]);
    

    这些将在下次启动游戏时读取,在启动画面之前设置起始分辨率。

    【讨论】:

    • 这是一个很好的解决方案,我已经掌握了大部分内容,但还是谢谢你 :) 虽然它没有回答我的主要问题,即如何在启动画面之前设置大小.
    • @IanH。我以为你知道 Unity 将分辨率信息存储在哪里,我将编辑我的答案以进行修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多