在android中改变方向

时间:2016-09-23 12:05:04

标签: android unity3d

我在最初的Allowed LandscapeRight和LandscapeLeft中将Orientation设置为AutoRotation。

Screen.orientation = ScreenOrientation.Portrait

Screen.orientation = ScreenOrientation.AutoRotation

当我将Screen.orientation更改为Portrait并恢复为Autorotation时,屏幕保持画像直到我旋转手机。

此问题仅发生在Android设备上。

2 个答案:

答案 0 :(得分:0)

难道你不认为这是自然行为吗?您将方向设置为纵向,手机进入纵向,然后您更改为自动旋转,现在这将根据您握住设备的方式更改方向。它不会强迫应用程序进入自动转向的允许方向。它会留在那里,除非你旋转它。如果要立即更改方向,则需要将方向明确设置为特定值。 Read More

希望这有帮助

答案 1 :(得分:0)

这是你应该做的:

1 。更改为肖像。

2 。当您决定更改回AutoRotation时,请执行此操作。

3 。读取当前方向(DeviceOrientation)。将其转换为ScreenOrientation,然后将其指定给屏幕方向。

注意 :您不应使用Screen.orientation阅读当前的屏幕方向。这是通过Input.deviceOrientation完成的。

这三个步骤放在代码中:

Screen.orientation = ScreenOrientation.Portrait;
Screen.orientation = ScreenOrientation.AutoRotation;
Screen.orientation = DeviceToScreenOrientation(Input.deviceOrientation);

DeviceToScreenOrientation / Input.deviceOrientation枚举转换为DeviceOrientation / Screen.orientation枚举的ScreenOrientation函数。

ScreenOrientation DeviceToScreenOrientation(DeviceOrientation dvceOr)
{
    ScreenOrientation scrOr = ScreenOrientation.Unknown;
    switch (dvceOr)
    {
        case DeviceOrientation.Unknown:
            scrOr = ScreenOrientation.Unknown;
            break;

        case DeviceOrientation.Portrait:
            scrOr = ScreenOrientation.Portrait;
            break;

        case DeviceOrientation.PortraitUpsideDown:
            scrOr = ScreenOrientation.PortraitUpsideDown;
            break;

        case DeviceOrientation.LandscapeLeft:
            scrOr = ScreenOrientation.LandscapeLeft;
            break;

        case DeviceOrientation.LandscapeRight:
            scrOr = ScreenOrientation.LandscapeRight;
            break;

        //Don't know What Enum to use. Implement to match your need
        case DeviceOrientation.FaceUp:
            //scrOr = ?
            break;

        case DeviceOrientation.FaceDown:
            //scrOr = ?
            break;
    }
    return scrOr;
}

您可能需要切换步骤#2和#3