Tvarkykite kelis žaidimų pultus

Puslapis atnaujintas :
Puslapio sukūrimo data :

Tikrinimo aplinka

Windows
  • Langai 11
"Unity" redaktorius
  • 2020.3.25f1
Įvesties sistemos paketas
  • 1.2.0

Būtinos šio patarimo sąlygos

Šie nustatymai buvo atlikti iš anksto kaip šio patarimo aprašymo prielaida.

Iš pradžių

Norėdami gauti Gamepad.all informacijos apie kelis žaidimų pultus, galite gauti . ReadOnlyArray Kadangi jis foreach apibrėžtas .

Šiame patarime norėčiau parodyti kiekvieno žaidimų pulto informaciją tekste. Gamepad Kadangi klasė naudojama, kai veikia "Windows", tinkami tik valdikliai, kurie gali naudoti "Xinput".

Taip pat žiūrėkite šį puslapį, kuriame rasite pagrindinį žaidimų pultų tvarkymą.

Gaukite informacijos apie kelis žaidimų pultus

Išdėstykite teksto objektą, kad būtų rodoma žaidimų pulto informacija. Šį kartą galite rodyti iki 4 žaidimų pultų.

Sukurkite scenarijų. Pavadinimas yra savavališkas, bet kol kas GamepadAll paliksime jį kaip .

Scenarijus atrodo taip: Šį kartą tikslas yra išvardyti žaidimų pultus, todėl informacijos apie kiekvienos informacijos gavimą ieškokite "Veikimas su žaidimų pultu (įvesties sistemos paketo versija)".

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 Galite išvardyti visus prijungtus žaidimų pultus . ReadOnlyArray Kadangi jis for foreach yra apibrėžtas , jį galima išvardyti .

Įrašę EventSystem scenarijų, pridėkite jį prie . TextObjects apibrėžiamas kaip masyvas, todėl galite nustatyti kelis teksto objektus.

Pabandykite paleisti žaidimą ir valdyti žaidimų pultą. Jei turite prijungtus kelis žaidimų pultus, matysite tiek informacijos, kiek norite.