Vairāku spēļu paliktņu pārvaldība
Verifikācijas vide
- Windows
-
- Operētājsistēmā Windows 11
- Vienotības redaktors
-
- 2020.3.25f1
- Ievades sistēmas pakete
-
- 1.2.0
Priekšnoteikumi šim padomam
Tālāk norādītie iestatījumi ir veikti iepriekš kā priekšnoteikums šī padoma aprakstam.
Sākumā
Lai iegūtu Gamepad.all
informāciju par vairākiem spēļu paliktņiem, to var panākt, iegūstot .
ReadOnlyArray
Tā kā tas foreach
ir definēts .
Šajā padomā es vēlētos tekstā parādīt katra gamepad informāciju.
Gamepad
Tā kā klase tiek izmantota, darbojoties operētājsistēmā Windows, ir piemēroti tikai kontrolieri, kas var izmantot "Xinput".
Lūdzu, skatiet arī nākamo lapu, lai uzzinātu par spēļu paliktņu pamata apstrādi.
Iegūstiet informāciju par vairākiem spēļu paliktņiem
Sakārtojiet teksta objektu, lai parādītu spēļu paneļa informāciju. Šoreiz jūs varat parādīt līdz 4 spēļu paliktņiem.
Izveidojiet skriptu. Nosaukums ir patvaļīgs, bet pagaidām GamepadAll
mēs to atstāsim kā .
Skripts izskatās šādi: Šoreiz mērķis ir uzskaitīt spēļu paliktņus, tāpēc informāciju par katras informācijas iegūšanu skatiet sadaļā "Darbojas ar gamepad (ievades sistēmas pakotnes 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
Varat uzskaitīt visus pievienotos spēļu paliktņus pakalpojumā .
ReadOnlyArray
Tā kā tas for
foreach
ir definēts , to var uzskaitīt ar .
Pēc EventSystem
skripta saglabāšanas pievienojiet to .
TextObjects
ir definēts kā masīvs, tāpēc var iestatīt vairākus teksta objektus.
Mēģiniet palaist spēli un kontrolēt spēļu paneli. Ja jums ir pievienoti vairāki spēļu paliktņi, jūs redzēsit tik daudz informācijas, cik vēlaties.