ایک سے زیادہ گیم پیڈ کا انتظام کریں
تصدیق کا ماحول
- Windows
-
- ونڈوز 11
- یونٹی ایڈیٹر
-
- 2020.3.25f1
- ان پٹ سسٹم پیکیج
-
- 1.2.0
اس ٹوٹکے کے لئے ضروری شرائط
مندرجہ ذیل ترتیبات اس ٹپ کی وضاحت کے لئے بنیاد کے طور پر پیشگی بنائی گئی ہیں۔
سب سے پہلے
Gamepad.all
ایک سے زیادہ گیم پیڈ کے بارے میں معلومات حاصل کرکے حاصل کیا جا سکتا ہے.
ReadOnlyArray
چونکہ اس کی وضاحت اس foreach
میں کی گئی ہے۔
اس ٹپ میں ، میں متن میں ہر گیم پیڈ کی معلومات ظاہر کرنا چاہتا ہوں۔
Gamepad
چونکہ کلاس استعمال کی جاتی ہے ، ونڈوز پر چلتے وقت ، صرف کنٹرولرز جو "شن پٹ" استعمال کرسکتے ہیں اہل ہیں۔
نیز ، براہ کرم گیم پیڈ کی بنیادی ہینڈلنگ کے لئے مندرجہ ذیل صفحے کا حوالہ دیں۔
ایک سے زیادہ گیم پیڈ کے بارے میں معلومات حاصل کریں
گیم پیڈ کی معلومات کو ظاہر کرنے کے لئے ٹیکسٹ آبجیکٹ کا اہتمام کریں۔ اس بار ، آپ 4 گیم پیڈ دکھا سکتے ہیں۔
اسکرپٹ بنائیں۔ نام من مانی ہے، لیکن فی الحال GamepadAll
ہم اسے اس طرح چھوڑ دیں گے.
اسکرپٹ اس طرح نظر آتا ہے: اس بار ، مقصد گیم پیڈ کی فہرست بنانا ہے ، لہذا ہر معلومات حاصل کرنے کے بارے میں معلومات کے لئے "گیم پیڈ (ان پٹ سسٹم پیکیج ورژن) کے ساتھ کام کرنا" دیکھیں۔
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
آپ تمام منسلک گیم پیڈز کو اس میں شمار کرسکتے ہیں۔
ReadOnlyArray
چونکہ اس for
foreach
کی وضاحت اس میں کی گئی ہے ، لہذا اس کی گنتی کی جاسکتی ہے ۔
اسکرپٹ کو محفوظ کرنے کے بعد EventSystem
، اسے منسلک کریں۔
TextObjects
ایک سرے کے طور پر بیان کیا گیا ہے ، لہذا آپ متعدد ٹیکسٹ آبجیکٹس سیٹ کرسکتے ہیں۔
گیم چلانے اور گیم پیڈ کو کنٹرول کرنے کی کوشش کریں۔ اگر آپ کے پاس متعدد گیم پیڈ منسلک ہیں تو ، آپ کو جتنی چاہیں معلومات نظر آئیں گی۔