描述屏幕方向,目前,这仅适用于移动设备。
下面是官方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