השתמש בפקדי קלט הממוטבים למגע עם 'שליטה על המסך'

עודכן דף :
תאריך יצירת דף :

סביבת אימות

חלונות
  • חלונות 11
עורך Unity
  • 2020.3.25F1
חבילת מערכת קלט
  • 1.2.0

תנאים מוקדמים לטיפ זה

ההגדרות הבאות נקבעו מראש כהנחת יסוד לתיאור עצה זו.

כדאי שתכירו גם את הטיפים הבאים:

אודות שליטה על המסך עבור מגע

לעתים קרובות אני משתמש במקלדת או ב- gamepad כדי לשחק משחקים. במכשירים שניתן להפעיל רק באמצעות מגע, כגון טלפונים חכמים, תוכל לשחק את המשחק באמצעות מגע.

חבילת מערכת הקלט של יוניטי משתמשת בבקרת מסך כדי לדמות אינטראקציות מגע כאילו הן נשלטות על ידי בקר.

לפני שליטה על המסך

מאמר זה מעט ארוך, אך נושא זה אינו קשור ישירות ל'שליטה על המסך'. אם באפשרותך להשתמש בחבילת מערכת הקלט בשלבים אחרים כדי לבדוק את הקלט, כגון gamepad, זה בסדר.

בטיפ זה ניצור מפת פעולה. מתאר כיצד לדמות נגיעה ב- gamepad כאילו אתה מקיים אינטראקציה איתו.

אגב, הוא תומך גם בשיטה של שימוש בשיעורים ושיעורים Gamepad בסקריפטים Keyboard במקום מפות פעולה. אני לא אסביר את זה הפעם, אבל אם אתה רוצה לנסות את זה עם שיעורים אלה, אתה יכול להכין את הקוד המתואר בדף הבא במקום.

תחילה, מקם אובייקט טקסט על בד הציור כדי להציג את הקלט שלך. מאוחר יותר, נציב את אובייקט המגע בתחתית, אז להשאיר קצת מקום.

תחילה, צור מפת פעולות באופן הבא: אתה יוצר את אותה פעולה כפי שעשית כאשר תיארת את מפת הפעולות.

מכיוון שההסבר על מפת הפעולה אינו העיקר, הכריכה פשוטה. אנא עיין בדף הבא לקבלת פרטים על מפות פעולה.

הפעם, רכישת קלט מתבצעת על ידי סקריפט במקום "שלח הודעות" או "הפעל אירועי אחדות". זה גם לא מוגבל סקריפטים, וזה עובד כראוי גם אם אתה משתמש "שלח הודעות" וכו '.

ודא שיצרת את הקוד ממפת הפעולות.

הסקריפט נראה כך: זה כמעט כמו כאשר מסבירים את מפת הפעולה.

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;

public class InputActionScript : MonoBehaviour
{
  /// <summary>情報を表示させるテキストオブジェクト。</summary>
  [SerializeField] private Text TextObject;

  /// <summary>アクションマップから自動生成されたクラス。</summary>
  private InputActionSample _actionMap;

  private void Awake()
  {
    // 各操作を行ったときに呼ばれるイベントを設定する
    _actionMap = new InputActionSample();
    _actionMap.Action2D.Move.performed += context => OnMove(context);
    _actionMap.Action2D.Attack.performed += context => OnAttack(context);
    _actionMap.Action2D.Move.canceled += context => OnMove(context);
    _actionMap.Action2D.Attack.canceled += context => OnAttack(context);
  }

  private void OnEnable()
  {
    // このオブジェクトが有効になったときにアクションマップを有効にする
    _actionMap.Enable();
  }

  private void OnDisable()
  {
    // このオブジェクトが無効になったときにアクションマップが余計な動作を起こさないように無効にする
    _actionMap.Disable();
  }

  /// <summary>
  /// Move 操作をした時に呼ばれるメソッドです。
  /// </summary>
  /// <param name="context">コールバックパラメータ。</param>
  public void OnMove(InputAction.CallbackContext context)
  {
    // Move の入力量を取得
    var vec = context.ReadValue<Vector2>();
    TextObject.text = $"Move:({vec.x:f2}, {vec.y:f2})\n{TextObject.text}";
  }

  /// <summary>
  /// Attack 操作をした時に呼ばれるメソッドです。
  /// </summary>
  /// <param name="context">コールバックパラメータ。</param>
  public void OnAttack(InputAction.CallbackContext context)
  {
    // Attack ボタンの状態を取得
    var value = context.ReadValueAsButton();
    TextObject.text = $"Attack:{value}\n{TextObject.text}";
  }
}

הסקריפט EventSystem מצורף ל- .

הפעל את המשחק כדי לראות אם הוא פועל כמפת פעולה.

לחצן 'על המסך'

הלחצן על המסך מדמה לחיצה על לחצנים בלוח משחק, כגון A ו- B, ואת המקשים בלוח המקשים כאשר אתה נוגע באובייקט כלשהו על המסך. אגב, זה אומר מגע, אבל זה עובד גם עם לחיצות עכבר.

ראשית מקם את הלחצן על המסך. מכיוון שאתה רק מחבר רכיב, הוא פועל עם אובייקטים שאינם לחצנים.

הוסף לחצן קלט > על המסך מהרכיב.

הגדר את לחצן Gamepad מזרחה מנתיב הבקרה. זה גורם לזה להיראות כאילו כפתור מזרח על Gamepad נלחץ כאשר נגעו בו.

ודא שהאפשרות התקפה מופיעה בעת הפעלת המשחק ולחץ על הלחצן. אם זהו התקן שניתן לגעת בו, תוכל לאשר שהוא פועל עם מגע.

סטיק על המסך

'מוט על המסך' מאפשר לך להזיז אובייקטים כגון מקלות באמצעות המגע שלך. כאשר אתה מזיז מקל, אפשר לדמות אותו כאילו הזזת מקל gamepad. בנוסף למגע, ניתן גם להזיז אותו עם העכבר.

מציב אובייקט כפתור על המסך שיהיה מוט מגע. אנחנו משתמשים כאן בכפתור, אבל הוא עובד גם עם אובייקטים שאינם כפתורים.

תחת הוסף רכיב, בחר קלט > מוט על המסך.

מתוך נתיב בקרה, בחר את Gamepad LeftStick המוגדר במפת הפעולות.

הפעל את המשחק ונסה לגרור את לחצן הסטיק. הכפתורים נעים במעגל, כאילו מזיזים מקל. כמובן, באפשרותך גם לבדוק שתוכן הקלט מובא בזמן שהוא פועל.

במקרה זה, שמנו כפתור, אבל אפשר גם לגרום לו להיראות כמו מקל וירטואלי על ידי הצבת מסגרת עגולה וחפץ מקל עגול.

אגב, טווח מטלטל זה ניתן לשנות את "טווח התנועה" של סטיק על המסך.