Gamepad navigation doesn't work with SurfaceGuis

,

When attempting to select a SurfaceGui with a gamepad, no method works to my knowledge. When pressing the select button on a controller, you’d normally expect to be able to navigate SurfaceGuis, but you aren’t able to anymore. I’ve also attempted setting the SelectedObject to the SurfaceGui button, but it still doesn’t let me navigate it. As far as I’m concerned this happens all the time.

I’ve also tried selecting some SurfaceGuis in games that I believe I used to be able to navigate with a gamepad, but I’m no longer able to. You are able to observe this behavior at my own game’s main menu:

Here’s a comparison of what’s happening and what’s expected to happen:

How to reproduce it:

  • Insert a SurfaceGui into StarterGui
  • Insert a TextButton into the SurfaceGui
  • Set the SurfaceGui adornee to a part in workspace
  • Attempt to select the TextButton in Play Solo with a gamepad

I relied on the old behavior so that players using a gamepad would be able to navigate the main menu of my game which uses a SurfaceGui. This wasn’t a problem until sometime this year (I believe) and apparently it’s been like this for at least a month (at most, less than a year).

If I insert my menu into a ScreenGui, selecting the buttons with my a gamepad works as expected, so I know that this problem is only occuring for SurfaceGuis.

4 Likes

I noticed this behavior in my game as well, SurfaceGuis used for menus are not accessible by gamepad inputs anymore. Hopefully there is an answer.

1 Like

Sorry to bump, but this still seems to be an issue? I’ve set SelectionTuple to objects within a SurfaceGui and there is no way for me to navigate through the UI. I am able to set SelectedObject, but can’t navigate whatsoever

The issue was probably resolved for XBOX, since I have gotten it to work correctly in the past. Are you using the XBOX game controller or VR?

using an xbox controller in studio. I set the SelectionTuple to 3 objects (all 3 in seperate SurfaceGui’s) and SurfaceGui’s are parented to the PlayerGui, but it’s unable to navigate between them

Hi!

Please give us the place file you’re experiencing this issue on.

Thanks!

Selects board 1’s button, but any movement of the controller does nothing
SurfaceGui SelectedObject bug.rbxl (44.1 KB)

local guis = {}
for i = 1, 3 do
	local newGui = game.ReplicatedStorage.SurfaceGui:Clone()
	newGui.Adornee = workspace[i]
	newGui.Parent = game.Players.LocalPlayer.PlayerGui
	
	table.insert(guis, newGui.TextButton)
end

if game.UserInputService.GamepadEnabled then
	game.GuiService:AddSelectionTuple("Boards", unpack(guis))
	game.GuiService.SelectedObject = guis[1]
end

Note, would be nice if there was like a GuiService.CurrentSelectionGroup or something, as I’m unsure if it’s possibly including other selection groups. Would be nice to be able to check for any other seleciton groups at that time, delete them, and then create new one, so the selection is 100% guaranteed to only be these objects

Hi there! Gamepad selection won’t automatically jump between different SurfaceGuis. You can manually add jumps with the NextSelectionUp/Down/Left/Right properties. I’d also recommend looking into the new SelectionGroup property over AddSelectionGroup/Tuple, but both SelectionGroup and AddSelectionGroup/Tuple will only restrict selection. You won’t be able to use them to reach buttons you couldn’t reach before.

1 Like