如何获取显示器/屏幕分辨率

5

如您所知,显示器和屏幕都是按照一定的分辨率制造的。我需要获得显示器/屏幕的分辨率,而不是游戏窗口/全屏的分辨率,我指的是显示器/屏幕的物理分辨率。

我需要这个功能在安卓和Windows系统下都能使用。

编辑:

我刚刚找到了我需要的东西,叫做本机分辨率

2个回答

8

看起来我找到了解决方案。@Draco18s 指出了 Screen 类,但我正在寻找的是称为Display的类。 Display 类允许我获取显示器或显示屏的本机像素大小。看起来"Screen"类仅用于游戏窗口/全屏,而对于显示器作为硬件设备,则使用"Display"类。它是最近添加到Unity3d中的多显示支持,这就是为什么很少有人知道它的存在的原因。

具体来说,我正在寻找Display.main.systemHeightDisplay.main.systemWidth


好发现,我肯定不知道它。 - Draco18s no longer trusts SE
请注意,在编辑器中,这将返回为Game View设置的分辨率(或者如果使用自由纵横比或某些纵横比约束,则计算出来的分辨率),这可能不是您想要的。另一种选择Screen.currentResolution确实返回编辑器中显示的本机分辨率;但请注意,在构建中,它似乎仅在独占全屏模式下返回本机分辨率,并且不使用超过显示限制的缩放技术(在https://answers.unity.com/questions/16216/how-to-get-native-screen-resolution.html上看到了一些评论,但无法测试所有内容)。 - hsandt

2

你需要的是 Screen 类。

特别是 Screen.widthScreen.height 属性。


很遗憾,不行。这只会给你当前的分辨率,即游戏窗口/全屏的分辨率。正如我在问题中所说:“我不是指游戏窗口/全屏的分辨率,而是指显示器/屏幕的物理分辨率。” 我需要屏幕的物理分辨率,因为我想使用它来设置当前的分辨率@Draco18s。 - Jacob
@Garrom那Screen.resolutions 怎么样? - Draco18s no longer trusts SE
@ryeMoss 我承认你是对的,但问题是:它在安卓上工作吗?毕竟,这是微软的类。 - Jacob
1
我不确定是否有通用的方法来确定屏幕大小。可能需要根据设备类型使用两个不同的类。 - ryeMoss
在Android上,Screen.width / Screen.height很可能是全屏分辨率...除非你的应用程序支持多应用程序。 - Draco18s no longer trusts SE
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接