Gérer plusieurs manettes de jeu
Environnement de vérification
- Windows
-
- Fenêtres 11
- Éditeur Unity
-
- 2020.3.25f1
- Package système d’entrée
-
- 1.2.0
Conditions préalables à cette astuce
Les paramètres suivants ont été définis à l’avance comme prémisse pour la description de cette astuce.
Au début
Pour obtenir des informations sur plusieurs manettes de jeu, il est possible d’obtenir Gamepad.all
.
ReadOnlyArray
Puisqu’il foreach
est défini dans .
Dans cette astuce, je voudrais afficher les informations de chaque manette de jeu en texte.
Gamepad
Étant donné que la classe est utilisée, lors de l’exécution sous Windows, seuls les contrôleurs qui peuvent utiliser « Xinput » sont éligibles.
Veuillez également vous référer à la page suivante pour la manipulation de base des manettes de jeu.
Obtenir des informations sur plusieurs manettes de jeu
Organisez un objet texte pour afficher les informations de la manette de jeu. Cette fois, vous pouvez afficher jusqu’à 4 manettes de jeu.
Créez un script. Le nom est arbitraire, mais pour l’instant GamepadAll
nous allons le laisser comme .
Le script ressemble à ceci : Cette fois, le but est de lister les manettes de jeu, donc voir « Fonctionnement avec une manette de jeu (version du package système d’entrée) » pour plus d’informations sur l’obtention de chaque information.
using System.Text;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class GamepadAll : MonoBehaviour
{
<summary>情報を表示させるテキストオブジェクト一覧。</summary>
[SerializeField] private Text[] TextObjects;
StringBuilder Builder = new StringBuilder();
StringBuilder BuilderButton = new StringBuilder();
// 更新はフレームごとに1回呼び出されます
void Update()
{
if (TextObjects == null)
{
Debug.Log($"{nameof(TextObjects)} が null です。");
return;
}
// Gamepad.all で接続されているすべてのゲームパッドを列挙できる
// TextObjects の数以上の情報は載せられないので、少ない方の数で for する
for (int i = 0; i < Gamepad.all.Count || i < TextObjects.Length; i++)
{
var gamepad = Gamepad.all[i];
var textObject = TextObjects[i];
Builder.Clear();
BuilderButton.Clear();
Builder.AppendLine($"deviceId:{gamepad.deviceId}");
Builder.AppendLine($"name:{gamepad.name}");
// 操作されたボタンなどの情報を取得
var leftStickValue = gamepad.leftStick.ReadValue();
var rightStickValue = gamepad.rightStick.ReadValue();
var dpadValue = gamepad.dpad.ReadValue();
if (leftStickValue.magnitude > 0f) Builder.AppendLine($"LeftStick:{leftStickValue.normalized * leftStickValue.magnitude}");
if (rightStickValue.magnitude > 0f) Builder.AppendLine($"RightStick:{rightStickValue.normalized * rightStickValue.magnitude}");
if (dpadValue.magnitude > 0f) Builder.AppendLine($"Dpad:{dpadValue.normalized * dpadValue.magnitude}");
if (gamepad.aButton.isPressed) BuilderButton.Append($"A ");
if (gamepad.bButton.isPressed) BuilderButton.Append($"B ");
if (gamepad.xButton.isPressed) BuilderButton.Append($"X ");
if (gamepad.yButton.isPressed) BuilderButton.Append($"Y ");
if (gamepad.startButton.isPressed) BuilderButton.Append($"Start ");
if (gamepad.selectButton.isPressed) BuilderButton.Append($"Select ");
if (gamepad.leftStickButton.isPressed) BuilderButton.Append($"LeftStickButton ");
if (gamepad.rightStickButton.isPressed) BuilderButton.Append($"RightStickButton ");
if (gamepad.leftShoulder.isPressed) BuilderButton.Append($"LeftShoulder ");
if (gamepad.rightShoulder.isPressed) BuilderButton.Append($"RightShoulder ");
if (BuilderButton.Length >= 1) Builder.AppendLine(BuilderButton.ToString());
var leftTriggerValue = gamepad.leftTrigger.ReadValue();
var rightTriggerValue = gamepad.rightTrigger.ReadValue();
if (leftTriggerValue > 0 || rightTriggerValue > 0)
{
Builder.AppendLine($"Trigger:({leftTriggerValue:f2}, {rightTriggerValue:f2})");
}
// 取得した情報を表示
textObject.text = Builder.ToString();
}
}
}
Gamepad.all
Vous pouvez énumérer toutes les manettes de jeu connectées dans .
ReadOnlyArray
Puisqu’il est défini dans , il for
foreach
peut être énuméré par .
Après EventSystem
avoir enregistré le script, joignez-le à .
TextObjects
est défini comme un tableau, de sorte que vous pouvez définir plusieurs objets texte.
Essayez d’exécuter le jeu et de contrôler la manette de jeu. Si vous avez plusieurs manettes connectées, vous verrez autant d’informations que vous le souhaitez.