I’ve had a problem where my gamepad UI code was getting skipping options and doing other odd things. After way more debugging than I’d like to admit, I found the bug, and shes a sneaky one.
It’s a simple test, the new open close events on GuiService make it super easy to observe. Stick whats below in a LocalScript, and stick that LocalScript in StarterPlayerScripts and give it a test. Opening and closing the menu should result in a different set of prints.
local guiService = game:GetService("GuiService")
----
guiService.AutoSelectGuiEnabled = false
guiService.GuiNavigationEnabled = false
----
local function check()
print(guiService.AutoSelectGuiEnabled)
print(guiService.GuiNavigationEnabled)
end
----
guiService.MenuOpened:connect(check)
guiService.MenuClosed:connect(check)
It should print false false both times, but GuiNavEnabled gets set to true and does not get reset back to false on close, resulting in a false true print. Ideally both properties should be reverted to what they were set to before the menu was opened, that way people relying on having a specific combo don’t have to reset the values every time the menu opens and closes.
NOTE!!! This bug ONLY seems to occur when the escape menu is opened with a gamepad, it prints as it should when opened via keyboard or hamburger button.
It’s an easy enough bug to work around, but none the less it is a bug and deserves to be squished (or scooped up in a cup and put outside, your choice).