Unity3d Input.deviceOrientation与Screen.orientation

Unity3d Input.deviceOrientation与Screen.orientation,unity3d,Unity3d,正如我的标题所示,Input.deviceOrientation与Screen.orientation之间有什么区别 什么时候使用这些?免责声明:我没有测试我的理论,但阅读了手册,我的理解如下: 输入。设备打印是一个只读属性,它返回操作系统报告的设备的物理方向。我将使用此属性来确定用户使用的方向。(这可能也取决于操作系统的自动旋转设置。) 屏幕。方向不是只读属性。这是您也可以在Unity3D的“播放器设置”中设置的设置。此属性可以更改,更改它很可能会更改Unity3D场景的布局和坐标(有效地将

正如我的标题所示,Input.deviceOrientationScreen.orientation之间有什么区别


什么时候使用这些?

免责声明:我没有测试我的理论,但阅读了手册,我的理解如下:

  • 输入。设备打印是一个只读属性,它返回操作系统报告的设备的物理方向。我将使用此属性来确定用户使用的方向。(这可能也取决于操作系统的自动旋转设置。)

  • 屏幕。方向不是只读属性。这是您也可以在Unity3D的“播放器设置”中设置的设置。此属性可以更改,更改它很可能会更改Unity3D场景的布局和坐标(有效地将其旋转90度增量)


如果我错了,请在评论中纠正我。谢谢。

输入。deviceOrientation
提供设备所在的方向。这可以报告与屏幕方向不对应的方向(例如,
面朝上
面朝下

Screen.orientation
告诉您屏幕上图像的方向,因此只能是四个值之一。也可以将其设置为更改方向。将其设置为
AutoRotation
将立即导致属性返回实际方向-即此属性永远不会返回
ScreenOrientation.AutoRotation

Screen.orientation
通常会匹配
Input.deviceOrientation
(不是字面意思,因为它们使用不同的枚举)-但最明显的是,当设备为平面时,这些将不匹配。在这种情况下,屏幕方向将是设备平放之前的任何设备方向


如果你想知道用户从哪个方向感觉到应用程序在他们的设备上,我会使用
Screen.orientation
。这在使用
WebCamTexture
输入时也很有用,因为当屏幕旋转时,这些纹理需要旋转(尽管纹理本身有一个属性来帮助)
Input.deviceOrientation
似乎不太有用-也许有些游戏你可以使用它,但加速度计可能更有用。

感谢@Gabor的快速回复,让我在实际游戏中测试一下,然后回复你:)我仍然认为可能有更合适的答案,所以我只是对这个回答投了赞成票,等待更明确的答复。我正在尝试提出一个方案。。。比方说,我希望游戏在横向和纵向模式下都可用,并使其在游戏中自动旋转。但是在游戏测试中,我意识到突然的场景方向改变会导致玩家的车从悬崖上掉下来或者其他什么。。。因此,我决定屏幕只能在暂停菜单中旋转。然后当游戏暂停时,我检查Input.DevicePrintation的值,并相应地设置Screen.orientation的值。当然,在这种理论情况下,屏幕方向不应设置为自动旋转。有什么想法吗?