To clarify: as a result of this forced change, there is now EXTRA padding added to the screen? Can we opt out of this? I don’t want to use the space near the notch and I want to be able to anchor UI to the side of the screen. I can no longer do that.
Unfortunately, the current decision is to not provide built-in support for asymmetrical landscape safe insets. The reason is that we want to make it easy for developers to build UI that follows industry-standard design principles found in many mobile games. One of those is that generally, symmetrical insets are applied for UI on notched screens in landscape mode. Here are some examples of games that inset their UI on both left and right, even though there is only a screen cutout on one side of the screen:
However, if you still would like to use asymmetrical safe area insets in your game, it is possible to create custom safe area insets using these methods:
One option is to use PlayerGui.CurrentScreenOrientation to detect LandscapeLeft/LandscapeRight orientations and assume that the notch (if any) is on the “top” side of the screen. Then, you could create a ScreenGui with ScreenInsets=None, and add a UIPadding to it in order to only add padding on the physical “bottom” side of the screen (which would be left or right).
Another solution would be to lock orientation to LandscapeLeft only, so you know the “bottom” side of the screen is always to the left. This could be done by setting PlayerGui.ScreenOrientation=LandscapeLeft instead of LandscapeSensor. Then you could use a ScreenGui ScreenInsets=None, and a UIPadding that only adds a right-side padding using a script that measures the current right safe inset size using this code.
Just checking, are you querying PlayerGui.CurrentScreenOrientation? Please note that CurrentScreenOrientation is the current screen orientation, while PlayerGui.ScreenOrientation sets what the supported orientations are for your game.
Repro: Turn on Screen Lock. Join a game, and the notch is stuck on the left side. CurrentScreenOrientation returns the opposite value. This is a pretty serious bug and we’re releasing our game in a week so we need it fixed otherwise we’ll have to move all UI closer to the middle of the screen.
Edit: after further testing, it appears to read incorrectly on join regardless of Screen Lock being enabled. Screen Lock just makes it permanent.
i dont have a problem with this update personally but i see why others do. it feels a lot more polished and immersive when playing games now to me. the insets dont bother me either but:
it would be nice to have the option to fill the dead zones and push certain buttons all the way to the edge. the industry standard may be dead zones but the goal should be to do the best and to innovate and make things better, not follow the industry standard
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local hasGyroscope = UserInputService.GyroscopeEnabled
local function initializeScreenOrientation()
if hasGyroscope then
local gravity = UserInputService:GetDeviceGravity().Position
if gravity.X > 0 then
playerGui.ScreenOrientation = Enum.ScreenOrientation.LandscapeLeft
playerGui.ScreenOrientation = Enum.ScreenOrientation.LandscapeRight
playerGui.ScreenOrientation = Enum.ScreenOrientation.LandscapeSensor
the wait is because changing it to sensor while the screen rotation animation is playing seems to mess with the current screen value which may also have something to do with the bug