Tvarkykite kelis žaidimų pultus
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.