Käytä kosketusoptimoituja syöttösäätimiä näyttöohjauksella

Sivu päivitetty :
Sivun luontipäivämäärä :

Varmennusympäristö

Windows
  • Windows 11
Unity-editori
  • 2020.3.25F1
Syöttöjärjestelmän paketti
  • 1.2.0

Tämän vinkin edellytykset

Seuraavat asetukset on tehty etukäteen tämän vinkin kuvauksen lähtökohtana.

Sinun tulisi myös tuntea seuraavat vinkit:

Tietoja kosketustoimintojen näyttöohjauksesta

Käytän usein näppäimistöä tai peliohjainta pelien pelaamiseen. Laitteissa, joita voidaan käyttää vain kosketuksella, kuten älypuhelimissa, pelaat peliä koskettamalla.

Unityn syöttöjärjestelmäpaketti käyttää näytön ohjausta simuloimaan kosketusohjauksia ikään kuin niitä ohjattaisiin ohjaimella.

Ennen näytön hallintaa

Tämä artikkeli on hieman pitkä, mutta tämä aihe ei liity suoraan näytön hallintaan. Jos voit käyttää syöttöjärjestelmäpakettia muissa vaiheissa syötteen, kuten peliohjaimen, tarkistamiseen, se on hyvä.

Tässä vinkissä luomme toimintakartan. Tässä artikkelissa kuvataan, miten voit simuloida peliohjaimen koskettamista aivan kuin olisit vuorovaikutuksessa sen kanssa.

Muuten, se tukee myös menetelmää luokkien ja Gamepad luokkien käyttämiseksi skripteissä Keyboard toimintakarttojen sijaan. En selitä sitä tällä kertaa, mutta jos haluat kokeilla sitä näiden luokkien kanssa, voit valmistaa seuraavalla sivulla kuvatun koodin.

Aseta ensin tekstiobjekti kankaalle näyttämään syötteesi. Myöhemmin asetamme kosketusobjektin alareunaan, joten jätä tilaa.

Luo ensin toimintakartta seuraavasti: Olet luomassa samaa toimintoa kuin toimintokarttaa kuvattaessa.

Koska toimintakartan selitys ei ole pääasia, sidonta on yksinkertaista. Lisätietoja toimintakartoista on seuraavalla sivulla.

Tällä kertaa syötteen hankinta suoritetaan komentosarjalla "Lähetä viestejä" tai "Käynnistä yhtenäisyystapahtumat" sijaan. Tämä ei myöskään rajoitu skripteihin, ja se toimii oikein, vaikka käytät "Lähetä viestejä" jne.

Varmista, että olet luonut koodin toimintokartasta.

Skripti näyttää tältä: Se on melkein sama kuin toimintakartan selittämisessä.

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

Komentosarja EventSystem on liitetty .

Suorita peli nähdäksesi, toimiiko se toimintokarttana.

Näytön painike

Näyttöpainike simuloi peliohjaimen painikkeiden, kuten A:n ja B:n, sekä näppäimistön näppäinten painamista, kun kosketat jotakin näytöllä olevaa kohdetta. Muuten, se sanoo kosketus, mutta se toimii myös hiiren napsautuksilla.

Aseta ensin painike näytölle. Koska liität vain komponentin, se toimii muiden objektien kuin painikkeiden kanssa.

Lisää tulo- > näyttöpainike komponentista.

Aseta peliohjaimen painike itään ohjauspolulta. Tämä saa näyttämään siltä, että peliohjaimen Button Eastia painettiin kosketettaessa.

Varmista, että Hyökkäys tulee näkyviin, kun suoritat pelin ja napsautat painiketta. Jos se on kosketeltava laite, voit vahvistaa, että se toimii kosketuksella.

Näyttötikku

Näyttösauvalla voit liikuttaa esineitä, kuten tikkuja, kosketuksellasi. Kun siirrät tikkua, on mahdollista simuloida sitä ikään kuin olisit siirtänyt peliohjaimen sauvaa. Kosketuksen lisäksi on myös mahdollista siirtää sitä hiirellä.

Asettaa näytölle painikeobjektin, joka on kosketustikku. Käytämme tässä painiketta, mutta se toimii myös muiden esineiden kuin painikkeiden kanssa.

Valitse Lisää komponentti -kohdassa Input > On-Screen Stick.

Valitse Control Path -kohdasta toimintokartassa määritetty Gamepad LeftStick.

Suorita peli ja yritä vetää sauvapainiketta. Painikkeet liikkuvat ympyrässä, ikään kuin siirtäisivät tikkua. Voit tietysti myös tarkistaa, että syötetty sisältö haetaan sen ollessa käynnissä.

Tässä tapauksessa olemme sijoittaneet painikkeen, mutta on myös mahdollista saada se näyttämään virtuaaliselta tikulta asettamalla pyöreä kehys ja pyöreä tikkuobjekti.

Muuten, tätä liikkuvaa aluetta voidaan muuttaa näyttötikun "Liikealueella".