Unity - 窗口大小取决于屏幕大小

时间:2017-02-26 14:31:36

标签: c# unity3d

我希望我的游戏拥有1:1的宽高比,但会扩大到一定数量。这意味着宽度和高度必须相同,但绝不大于实际的屏幕尺寸。在此基础上,为了确保一致的像素大小,宽度和高度值必须是2值的幂。

我没有任何问题找出所需的价值。

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

我更不知道在甚至显示启动图像之前如何设置窗口大小。有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:3)

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

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

因此,为此,您需要按如下方式设置播放器设置:

enter image description here

重要的是禁用['9,11', '10,8,1', '10,70', '70,10'] 。 然后,您可以通过停用Display Resolution Dialog来设置Default Screen WidthHeight

请注意,独立版将被强制执行此操作,并且只有此开始时的分辨率 - 在启动画面之后,您可以通过从加载的第一个场景中的任何脚本调用Default Is Native Resolution方法来设置所需的任何分辨率。 当然,您可以通过取消勾选/勾选Screen.SetResolution选项,在窗口模式或全屏模式下启动独立启动。

这就是它,如果你想给用户提供从1:1 AR分辨率列表中进行选择的选项,那么你现在就无法做到这一点。

修改:播放器设置的解析信息存储在Default Is Full Screen内的注册表中。 这三个键是:

HKEY_CURRENT_USER\Software\[YourCompanyName]\[YourGameName]

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

Screenmanager Is Fullscreen mode
Screenmanager Resolution Height
Screenmanager Resolution Width

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