GetConnectedGamepads
This function returns an array of Enum/UserInputType
gamepads currently connected. If no gamepads are connected, this array will be empty. Additionally, it only returns UserInputType objects that are gamepads. For instance, this event will return a connected Gamepad1 object but not a Keyboard object.
For example, the following code snippet retrieves the connected gamepads and stores them in a variable named connectedGamepads.
local userInputService = game:GetService("UserInputService")
local connectedGamepads = userInputService:GetConnectedGamepads()
To check if a specific gamepad is connected, use UserInputService/GetGamepadConnected
.
As UserInputService
is client-side only, this function can only be used in a LocalScript
.
See this page for articles on cross-platform development.
See also
UserInputService/GamepadConnected
UserInputService/GamepadDisconnected
UserInputService/GetConnectedGamepads
UserInputService/GetNavigationGamepads
UserInputService/SetNavigationGamepad
UserInputService/IsNavigationGamepad
UserInputService/IsGamepadButtonDown
UserInputService/GetSupportedGamepadKeyCodes
UserInputService/GetGamepadState
UserInputService/GetGamepadConnected
UserInputService/GamepadSupports
UserInputService/GamepadEnabled
Returns
Return Type | Summary |
---|---|
An array of |
Code Samples
How to Use the Right Gamepad for Input
The following code sample is used in the default gamepad script, so if you are using the default controls you do not need to worry about this. If you are creating a custom script for handling gamepad controls, this is a good template for retrieving which Enum/UserInputType|gamepad enum
you should use as the primary gamepad controller.
This code looks for the lowest numbered UserInputService/GetNavigationGamepad|navigation gamepad
, and if no navigation gamepad is found, finds the lowest numbered UserInputService/GetConnectedGamepad|connected gamepad
. If there is no connected gamepad, we default to gamepad1. This ensures at least some gamepad will be able to do controls.
local UserInputService = game:GetService("UserInputService")
local activeGamepad = nil
function GetActiveGamepad()
local activateGamepad = nil
local navigationGamepads = {}
navigationGamepads = UserInputService:GetNavigationGamepads()
if #navigationGamepads > 1 then
for i = 1, #navigationGamepads do
if activateGamepad == nil then
activateGamepad = navigationGamepads[i]
elseif navigationGamepads[i].Value < activateGamepad.Value then
activateGamepad = navigationGamepads[i]
end
end
else
local connectedGamepads = {}
connectedGamepads = UserInputService:GetConnectedGamepads()
if #connectedGamepads > 0 then
for i = 1, #connectedGamepads do
if activateGamepad == nil then
activateGamepad = connectedGamepads[i]
elseif connectedGamepads[i].Value < activateGamepad.Value then
activateGamepad = connectedGamepads[i]
end
end
end
if activateGamepad == nil then -- nothing is connected, at least set up for gamepad1
activateGamepad = Enum.UserInputType.Gamepad1
end
end
return activateGamepad
end
if UserInputService.GamepadEnabled then
activeGamepad = GetActiveGamepad()
end