Χρήση στοιχείων ελέγχου εισόδου βελτιστοποιημένων για αφή με τον Έλεγχο στην οθόνη

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον επαλήθευσης

παράθυρα
  • Παράθυρα 11
Επεξεργαστής ενότητας
  • 2020.3.25στ1
Πακέτο συστήματος εισόδου
  • 1.2.0

Προϋποθέσεις για αυτήν τη συμβουλή

Οι ακόλουθες ρυθμίσεις έχουν γίνει εκ των προτέρων ως προϋπόθεση για την περιγραφή αυτής της συμβουλής.

Θα πρέπει επίσης να είστε εξοικειωμένοι με τις παρακάτω συμβουλές:

Πληροφορίες για τον Έλεγχο στην οθόνη για αφή

Χρησιμοποιώ συχνά πληκτρολόγιο ή gamepad για να παίξω παιχνίδια. Σε συσκευές που μπορούν να λειτουργήσουν μόνο με άγγιγμα, όπως smartphone, θα παίξετε το παιχνίδι με άγγιγμα.

Το πακέτο συστήματος εισόδου της Unity χρησιμοποιεί τον Έλεγχο στην οθόνη για να προσομοιώσει τις αλληλεπιδράσεις αφής σαν να ελέγχονταν από χειριστήριο.

Πριν από τον έλεγχο στην οθόνη

Αυτό το άρθρο είναι λίγο μακροσκελές, αλλά αυτό το θέμα δεν σχετίζεται άμεσα με τον Έλεγχο στην οθόνη. Εάν μπορείτε να χρησιμοποιήσετε το πακέτο συστήματος εισόδου σε άλλα βήματα για να ελέγξετε την είσοδο, όπως ένα 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 δέσμη ενεργειών επισυνάπτεται στο .

Εκτελέστε το παιχνίδι για να δείτε αν λειτουργεί ως χάρτης δράσης.

Κουμπί στην οθόνη

Το κουμπί οθόνης προσομοιώνει το πάτημα κουμπιών σε ένα gamepad, όπως το A και το B, και τα πλήκτρα στο πληκτρολόγιο όταν αγγίζετε κάποιο αντικείμενο στην οθόνη. Παρεμπιπτόντως, λέει αφή, αλλά λειτουργεί επίσης με κλικ του ποντικιού.

Τοποθετήστε πρώτα το κουμπί στην οθόνη. Δεδομένου ότι απλώς επισυνάπτετε ένα στοιχείο, λειτουργεί με αντικείμενα εκτός από κουμπιά.

Προσθέστε ένα κουμπί εισόδου > στην οθόνη από το στοιχείο.

Ρυθμίστε το κουμπί του Gamepad ανατολικά από τη διαδρομή ελέγχου. Αυτό το κάνει να φαίνεται σαν να πατήθηκε το Button East στο Gamepad όταν το άγγιξες.

Βεβαιωθείτε ότι εμφανίζεται το Attack όταν εκτελείτε το παιχνίδι και κάντε κλικ στο κουμπί. Εάν πρόκειται για συσκευή αφής, μπορείτε να επιβεβαιώσετε ότι λειτουργεί με αφή.

Στικ οθόνης

Ο μοχλός οθόνης σάς επιτρέπει να μετακινείτε αντικείμενα όπως μοχλούς με το άγγιγμά σας. Όταν μετακινείτε ένα ραβδί, είναι δυνατό να το προσομοιώσετε σαν να είχατε μετακινήσει ένα ραβδί gamepad. Εκτός από την αφή, είναι επίσης δυνατό να το μετακινήσετε με το ποντίκι.

Τοποθετεί ένα αντικείμενο κουμπιού στην οθόνη που θα είναι ένα touch stick. Χρησιμοποιούμε ένα κουμπί εδώ, αλλά λειτουργεί επίσης με αντικείμενα εκτός από κουμπιά.

Στην περιοχή Add Component, επιλέξτε Input > On-Screen Stick.

Από τη διαδρομή ελέγχου, επιλέξτε το αριστερό μοχλό του gamepad που ορίζεται στον χάρτη ενεργειών.

Εκτελέστε το παιχνίδι και δοκιμάστε να σύρετε το κουμπί Stick. Τα κουμπιά κινούνται σε κύκλο, σαν να μετακινούν ένα ραβδί. Φυσικά, μπορείτε επίσης να ελέγξετε ότι το περιεχόμενο εισόδου λαμβάνεται ενώ εκτελείται.

Σε αυτή την περίπτωση, έχουμε τοποθετήσει ένα κουμπί, αλλά είναι επίσης δυνατό να το κάνουμε να μοιάζει με εικονικό ραβδί τοποθετώντας ένα κυκλικό πλαίσιο και ένα αντικείμενο στρογγυλής ράβδου.

Παρεμπιπτόντως, αυτό το κινητό εύρος μπορεί να αλλάξει στο "Εύρος κίνησης" του ραβδιού οθόνης.