输入设备方向 Vs 屏幕方向

4

正如标题所述,Input.deviceOrientationScreen.orientation有什么区别。

什么时候使用它们各自?

2个回答

2
免责声明:我尚未测试过我的理论,但阅读了这里这里的手册后,我的理解如下:
  • Input.deviceOrientation是只读属性,它返回设备的物理方向,由操作系统报告。我会使用此属性来确定用户使用的方向。(这可能也取决于操作系统的自动旋转设置。)

  • Screen.orientation不是只读属性。它是您还可以在Unity3D的“Player Settings”中设置的设置。此属性可以更改,更改它很可能会更改Unity3D场景的布局和坐标(有效地以90度为增量旋转)。

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


1
谢谢 @Gabor 快速回复,让我在实际游戏中测试一下,然后再回复您 :) - Siddharth
我认为可能会有更恰当的答案,所以我只是给这个回复点赞,等待更明确的回复。 - Siddharth
我正在尝试构思一个场景...假设我想让游戏在横屏和竖屏模式下都可用,并使其在游戏中自动旋转。但是在进行游戏测试时,我意识到突然的场景方向变化可能会导致玩家的汽车掉下悬崖或其他事情...因此我决定只有在暂停菜单中才能旋转屏幕。然后当游戏暂停时,我检查 Input.deviceOrintation 的值,并相应地设置 Screen.orientation 的值。当然,在这种理论情况下,Screen.orientation 绝不能设置为 AutoRotation。有什么想法吗? - Gábor

2

Input.deviceOrientation提供设备所处的方向。它可以报告不对应屏幕方向的方向(例如FaceUpFaceDown)。

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

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

如果您想知道用户在其设备上感知应用程序的方向,请使用Screen.orientation。当使用WebCamTexture输入时,这也很有用,因为这些纹理需要在屏幕旋转时进行旋转(尽管纹理本身具有帮助解决此问题的属性)。Input.deviceOrientation似乎没有那么有用-也许有一些游戏可以使用它,但是加速度计可能更有用。


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