Creating the device detector
The first function we'll create is one that will detect whether we actually have a gamepad plugged in. Unity inherently gives us a way to make this very easy.
Adding the variables needed
First, we'll add variables that we'll use in the detection and identification functions. Add these to the top of your script, just after the class declaration:
bool isControllerConnected = false; public string Controller = "";
This Boolean will be used in later functions to determine whether there is a gamepad connected. The string will be used to hold the name of the gamepad connected.
Creating the detection function
Our next step is to add the DetectController
function. This will use the Boolean we created earlier and check whether there is a gamepad connected. Add the following code to your script:
void DetectController() { try { if(Input.GetJoystickNames()[0] != null) { isControllerConnected = true; IdentifyController(); } } catch { isControllerConnected = false; } }
This function uses the GetJoystickNames
function of the input, which gets and returns an array of strings, which consists of the names of the connected gamepads. We use this to set our Boolean to true or false; true meaning there's a device connected and false meaning that the game couldn't detect a device. The reason we use a try-catch expression is because if there is no gamepad connected Input.GetJoystickNames()
will give you an IndexOutOfRangeException
error.
Creating the identifier function
Our last step in creating the device detector will be to add the ability to identify the gamepad connected. Add this function to the script, just below the DetectController
function:
void IdentifyController() { Controller = Input.GetJoystickNames()[0]; }
As you can see, we are assigning the name of the gamepad connected to our Controller
variable. To use this function, call it within the DetectController
function, in the if
statement, where we set isControllerConnected
to true
.