屏幕显示模式ScreenOrientation

    技术2022-07-11  87

    描述屏幕方向,目前,这仅适用于移动设备。

    下面是官方API截图:

    Portrait 竖屏

    PortraitUpsideDown 竖屏 上下颠倒。

    LandscapeLeft 横屏从逆时针旋转

    LandscapeRight 横屏从顺时针旋转

    AutoRotation 自动旋转

     

    unity 设置屏幕旋转

    只允许竖屏:

    Portrait                    √

    Portrait Upside Down √

    Landscape Right        ×

    Landscape Left          ×

    只允许横屏:

    Portrait                    ×

    Portrait Upside Down ×

    Landscape Right        √

    Landscape Left          √

    适配逻辑:

    ---@private ---@param screenAdapter CS.Topjoy.Engine.UI.ScreenAdapterManager function UIManager:onChangeEdgeHandler(screenAdapter) if LuaMacro.UNITY_EDITOR then return end local kOrient = CS.UnityEngine.ScreenOrientation local orient = screenAdapter.mOrientation local safeArea = screenAdapter.m_SafeArea local screenWidth = CS.UnityEngine.Screen.width local screenHeight = CS.UnityEngine.Screen.height if LuaMacro.UNITY_ANDROID then --安卓 local api_level = DeviceInfo.sdk_version if api_level then if api_level >= 28 then screenAdapter.LeftEdge = safeArea.xMin screenAdapter.RightEdge = screenWidth - safeArea.xMax screenAdapter.TopEdge = screenHeight - safeArea.yMax screenAdapter.BottomEdge = safeArea.yMin elseif (screenWidth / screenHeight) >= 2 then if orient == kOrient.LandscapeLeft then screenAdapter.LeftEdge = 50 screenAdapter.RightEdge = 0 screenAdapter.TopEdge = 0 screenAdapter.BottomEdge = 0 elseif orient == kOrient.LandscapeRight then screenAdapter.LeftEdge = 0 screenAdapter.RightEdge = 50 screenAdapter.TopEdge = 0 screenAdapter.BottomEdge = 0 elseif orient == kOrient.Portrait then screenAdapter.LeftEdge = 0 screenAdapter.RightEdge = 0 screenAdapter.TopEdge = 50 screenAdapter.BottomEdge = 0 elseif orient == kOrient.PortraitUpsideDown then screenAdapter.LeftEdge = 0 screenAdapter.RightEdge = 0 screenAdapter.TopEdge = 0 screenAdapter.BottomEdge = 50 end end end elseif LuaMacro.UNITY_IOS then --苹果 if (screenWidth - safeArea.width) > 2 or (screenHeight - safeArea.height) > 2 then if orient == kOrient.LandscapeLeft then screenAdapter.LeftEdge = 50 screenAdapter.RightEdge = 0 screenAdapter.TopEdge = 0 screenAdapter.BottomEdge = 0 elseif orient == kOrient.LandscapeRight then screenAdapter.LeftEdge = 0 screenAdapter.RightEdge = 50 screenAdapter.TopEdge = 0 screenAdapter.BottomEdge = 0 elseif orient == kOrient.Portrait then screenAdapter.LeftEdge = 0 screenAdapter.RightEdge = 0 screenAdapter.TopEdge = 50 screenAdapter.BottomEdge = 0 elseif orient == kOrient.PortraitUpsideDown then screenAdapter.LeftEdge = 0 screenAdapter.RightEdge = 0 screenAdapter.TopEdge = 0 screenAdapter.BottomEdge = 50 end end end Logger.print( "onChangeEdgeHandler, LRTB", screenAdapter.LeftEdge, screenAdapter.RightEdge, screenAdapter.TopEdge, screenAdapter.BottomEdge ) end

     

    Processed: 0.013, SQL: 9