Hallitse useita peliohjaimia

Sivu päivitetty :
Sivun luontipäivämäärä :

Varmennusympäristö

Windows
  • Windows 11
Unity-editori
  • 2020.3.25F1
Syöttöjärjestelmän paketti
  • 1.2.0

Tämän vinkin edellytykset

Seuraavat asetukset on tehty etukäteen tämän vinkin kuvauksen lähtökohtana.

Alun perin

Saadaksesi Gamepad.all tietoa useista peliohjaimista voidaan saavuttaa hankkimalla . ReadOnlyArray Koska se foreach on määritelty .

Tässä vinkissä haluaisin näyttää kunkin peliohjaimen tiedot tekstinä. Gamepad Koska luokkaa käytetään, Windowsissa vain ohjaimet, jotka voivat käyttää "Xinputia", ovat kelvollisia.

Katso myös seuraavalta sivulta peliohjainten peruskäsittely.

Hanki tietoja useista peliohjaimista

Järjestä tekstiobjekti näyttämään peliohjaimen tiedot. Tällä kertaa voit näyttää jopa 4 peliohjainta.

Luo komentosarja. Nimi on mielivaltainen, mutta toistaiseksi GamepadAll jätämme sen .

Skripti näyttää tältä: Tällä kertaa tarkoituksena on luetella peliohjaimet, joten katso "Käyttö peliohjaimella (syöttöjärjestelmäpaketin versio)" saadaksesi lisätietoja kunkin tiedon hankkimisesta.

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 Voit luetella kaikki liitetyt peliohjaimet kohdassa . ReadOnlyArray Koska se on määritelty , se for foreach voidaan luetella .

Kun EventSystem olet tallentanut komentosarjan, liitä se . TextObjects on määritetty matriisiksi, joten voit määrittää useita tekstiobjekteja.

Yritä suorittaa peli ja ohjata peliohjainta. Jos sinulla on useita peliohjaimia kytkettynä, näet niin paljon tietoja kuin haluat.