実現したいこと
Unityで接続されているコントローラーの種類(DUALSHOCK4、Xboxなど)をスクリプトから取得したいと思っています。
発生している問題
Input.GetJoystickNames()でコントローラーの名前の配列を取得しているのですが、それぞれのPCでコントローラーに登録している名前が違うため、困っています。
ソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Slot : MonoBehaviour 6{ 7 8 public bool connected = false; 9 public string controller_name; 10 11 private float scroll; 12 public string[] controllerNames; 13 14 void Update() 15 { 16 // 接続されているコントローラの名前を調べる 17 controllerNames = Input.GetJoystickNames(); 18 19 // 一台もコントローラが接続されていなければログを吐く 20 if (controllerNames.Length == 0) 21 { 22 connected = false; 23 Debug.Log("Not Connected."); 24 } 25 else 26 { 27 connected = true; 28 controller_name = controllerNames[0]; 29 } 30 31 if (connected) 32 { 33 if (controllerNames[0].Contains("DUALSHOCK4")) 34 { 35 //PS4コントローラー 36 if (Input.GetKeyDown("joystick button 5")) 37 { 38 //R1ボタン 39 if (item_n < 5) 40 item_n ++; 41 } 42 if (Input.GetKeyDown("joystick button 4")) 43 { 44 //L1ボタン 45 if (item_n > 1) 46 item_n --; 47 } 48 } 49 } 50} 51
補足情報(FW/ツールのバージョンなど)
Unity2021.2.4f1