Uporaba vhodnih kontrolnikov, optimiziranih za dotik, z upravljanjem na zaslonu

Stran posodobljena :
Datum ustvarjanja strani :

Okolje za preverjanje

Windows
  • Windows 11
Urejevalnik Unity
  • 2020.3.25F1
Paket vhodnega sistema
  • 1.2.0

Predpogoji za ta nasvet

Naslednje nastavitve so bile vnaprej narejene kot premisa za opis tega nasveta.

Prav tako morate poznati naslednje nasvete:

O upravljanju na zaslonu za dotik

Za igranje iger pogosto uporabljam tipkovnico ali igralno konzolo. Na napravah, ki jih je mogoče upravljati samo z dotikom, kot so pametni telefoni, boste igro igrali z dotikom.

Paket vhodnega sistema Unity uporablja nadzor na zaslonu za simulacijo interakcij na dotik, kot da bi jih nadzoroval krmilnik.

Pred nadzorom na zaslonu

Ta članek je nekoliko dolg, vendar ta tema ni neposredno povezana z nadzorom na zaslonu. Če lahko vnos preverite v drugih korakih, na primer igralno konzolo, uporabite v drugih korakih, je to v redu.

V tem nasvetu bomo ustvarili akcijski zemljevid. Opisuje, kako simulirati dotikanje igralne konzole, kot da bi z njo komunicirali.

Mimogrede, podpira tudi način uporabe razredov in Gamepad razredov v Keyboard skriptih namesto akcijskih zemljevidov. Tokrat ga ne bom razložil, če pa ga želite preizkusiti s temi razredi, lahko namesto tega pripravite kodo, opisano na naslednji strani.

Najprej postavite besedilni predmet na platno, da prikažete svoje vnose. Kasneje bomo predmet dotika postavili na dno, zato pustite nekaj prostora.

Najprej ustvarite akcijski zemljevid na naslednji način: Ustvarjate isto dejanje, kot ste ga storili, ko ste opisali zemljevid dejanj.

Ker razlaga akcijskega načrta ni glavna stvar, je vezava preprosta. Podrobnosti o akcijskih zemljevidih najdete na naslednji strani.

Tokrat se pridobivanje vhodov izvede s skriptom namesto »Pošlji sporočila« ali »Prikliči dogodke enotnosti«. To tudi ni omejeno na skripte in deluje pravilno, tudi če uporabljate »Pošlji sporočila« itd.

Preverite, ali ste ustvarili kodo iz zemljevida dejanj.

Scenarij izgleda takole: To je skoraj enako kot pri pojasnjevanju akcijskega zemljevida.

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}";
  }
}

Skript EventSystem je priložen .

Zaženite igro in preverite, ali deluje kot akcijski zemljevid.

Gumb na zaslonu

Gumb na zaslonu simulira pritisk gumbov na igralni konzoli, kot sta A in B, in tipk na tipkovnici, ko se dotaknete nekega predmeta na zaslonu. Mimogrede, piše dotik, deluje pa tudi s kliki miške.

Najprej postavite gumb na zaslon. Ker samo pritrdite komponento, deluje s predmeti, ki niso gumbi.

Iz komponente dodajte gumb za vnos > zaslonu.

Nastavite gumb igralne konzole vzhodno od možnosti Control Path. Zaradi tega je videti, kot da je bil gumb East na igralni konzoli pritisnjen, ko se ga dotaknete.

Prepričajte se, da se pri zagonu igre prikaže možnost Napad in kliknite gumb. Če gre za napravo na dotik, lahko potrdite, da deluje na dotik.

Ključ na zaslonu

S funkcijo On-Screen Stick lahko z dotikom premikate predmete, kot so palice. Ko premaknete palico, jo lahko simulirate, kot da bi premaknili palico igralne konzole. Poleg dotika ga je mogoče premikati tudi z miško.

Na zaslon postavi predmet gumba, ki bo palica na dotik. Tukaj uporabljamo gumb, vendar deluje tudi s predmeti, ki niso gumbi.

Pod možnostjo Dodaj komponento izberite Vnos > ključek na zaslonu.

Na nadzorni poti izberite levo palico igralne konzole, določeno v zemljevidu dejanj.

Zaženite igro in poskusite povleči gumb Stick. Gumbi se premikajo v krogu, kot da premikajo palico. Seveda lahko preverite tudi, ali je vhodna vsebina pridobljena med izvajanjem.

V tem primeru smo postavili gumb, možno pa je tudi, da izgleda kot virtualna palica, tako da postavimo krožni okvir in predmet okrogle palice.

Mimogrede, to premično območje lahko spremenite v "območju gibanja" palice na zaslonu.