Διαχείριση πολλών gamepads
Περιβάλλον επαλήθευσης
- παράθυρα
-
- Παράθυρα 11
- Επεξεργαστής ενότητας
-
- 2020.3.25στ1
- Πακέτο συστήματος εισόδου
-
- 1.2.0
Προϋποθέσεις για αυτήν τη συμβουλή
Οι ακόλουθες ρυθμίσεις έχουν γίνει εκ των προτέρων ως προϋπόθεση για την περιγραφή αυτής της συμβουλής.
Αρχικά
Για να λάβετε Gamepad.all
πληροφορίες σχετικά με πολλαπλά gamepads μπορεί να επιτευχθεί με την απόκτηση .
ReadOnlyArray
foreach
Δεδομένου ότι ορίζεται στο .
Σε αυτήν την συμβουλή, θα ήθελα να εμφανίσω τις πληροφορίες κάθε gamepad σε κείμενο.
Gamepad
Δεδομένου ότι η κλάση χρησιμοποιείται, όταν εκτελείται σε Windows, μόνο οι ελεγκτές που μπορούν να χρησιμοποιήσουν το "Xinput" είναι κατάλληλοι.
Επίσης, ανατρέξτε στην ακόλουθη σελίδα για τον βασικό χειρισμό των gamepads.
Λήψη πληροφοριών σχετικά με πολλά gamepad
Τακτοποιήστε ένα αντικείμενο κειμένου ώστε να εμφανίζει πληροφορίες gamepad. Αυτή τη φορά, μπορείτε να εμφανίσετε έως και 4 gamepads.
Δημιουργήστε ένα σενάριο. Το όνομα είναι αυθαίρετο, αλλά προς το παρόν GamepadAll
θα το αφήσουμε ως .
Το σενάριο μοιάζει με αυτό: Αυτή τη φορά, ο σκοπός είναι να παραθέσετε τα gamepads, οπότε ανατρέξτε στην ενότητα "Λειτουργία με gamepad (έκδοση πακέτου συστήματος εισόδου)" για πληροφορίες σχετικά με τη λήψη κάθε πληροφορίας.
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
Μπορείτε να απαριθμήσετε όλα τα συνδεδεμένα gamepads στο .
ReadOnlyArray
for
foreach
Δεδομένου ότι ορίζεται στο , μπορεί να απαριθμηθεί από το .
Αφού EventSystem
αποθηκεύσετε τη δέσμη ενεργειών, επισυνάψτε την στο .
TextObjects
ορίζεται ως πίνακας, ώστε να μπορείτε να ορίσετε πολλά αντικείμενα κειμένου.
Δοκιμάστε να εκτελέσετε το παιχνίδι και να ελέγξετε το gamepad. Εάν έχετε συνδέσει πολλά gamepad, θα δείτε όσες πληροφορίες θέλετε.