Kasutage puutefunktsioonile optimeeritud sisendjuhtelemente koos ekraani juhtimisega

Lehekülg uuendatud :
Lehe loomise kuupäev :

Kontrollimise keskkond

Windows
  • Windows 11
Ühtsuse toimetaja
  • 2020.3.25f1
Sisendsüsteemi pakett
  • 1.2.0

Selle näpunäite eeltingimused

Selle vihje kirjeldamise eelduseks on eelnevalt tehtud järgmised sätted.

Samuti peaksite olema tuttav järgmiste nõuandetega:

Teave ekraani juhtimise kohta puutesisestuse jaoks

Mängude mängimiseks kasutan sageli klaviatuuri või mängupulti. Seadmetes, mida saab juhtida ainult puudutusega, näiteks nutitelefonides, mängite mängu puudutades.

Unity sisendsüsteemi pakett kasutab ekraanil juhtimist, et simuleerida puutetundlikke koostoimeid nii, nagu neid juhiks kontroller.

Enne ekraanil juhtimist

See artikkel on natuke pikk, kuid see teema ei ole otseselt seotud ekraanil juhtimisega. Kui saate sisendisüsteemi paketti kasutada muudes etappides sisendi kontrollimiseks, näiteks mängupult, on see hea.

Selles näpunäites loome tegevuskaardi. Kirjeldab, kuidas simuleerida mängupuldi puudutamist nii, nagu oleksite sellega suhelnud.

Muide, see toetab ka meetodit klasside ja Gamepad klasside kasutamiseks skriptides Keyboard tegevuskaartide asemel. Ma ei selgita seda seekord, kuid kui soovite seda nende klassidega proovida, võite selle asemel ette valmistada järgmisel lehel kirjeldatud koodi.

Esmalt asetage lõuendile tekstiobjekt sisendite kuvamiseks. Hiljem asetame puutetundliku objekti allosas, nii et jätke ruumi.

Esmalt looge tegevuskaart järgmiselt. Loote sama toimingu, mida tegite toimingukaardi kirjeldamisel.

Kuna tegevuskaardi selgitus ei ole peamine, on sidumine lihtne. Tegevuskaartide kohta leiate üksikasju järgmiselt lehelt.

Seekord toimub sisendi hankimine skripti abil, mitte "Saada sõnumeid" või "Kutsu esile ühtsuse sündmused". See ei piirdu ka skriptidega ja see töötab korralikult isegi siis, kui kasutate "Saada sõnumeid" jne.

Veenduge, et oleksite koodi tegevuskaardilt genereerinud.

Skript näeb välja selline: See on peaaegu sama, mis tegevuskaardi selgitamisel.

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 on lisatud .

Käivitage mäng, et näha, kas see töötab tegevuskaardina.

Ekraanil kuvatav nupp

Ekraanil olev nupp simuleerib mängupuldi nuppude (nt A ja B) ning klaviatuuri klahvide vajutamist, kui puudutate ekraanil mõnda objekti. Muide, see ütleb puudutust, kuid töötab ka hiireklõpsudega.

Kõigepealt asetage nupp ekraanile. Kuna kinnitate lihtsalt komponendi, töötab see muude objektidega kui nupud.

Lisage komponendilt sisend- > ekraaninupp.

Seadke mängupuldi nupp juhtimisrajalt ida poole. See jätab mulje, nagu oleks puudutamisel vajutatud Gamepadi nuppu East.

Veenduge, et mängu käivitamisel kuvatakse rünnak ja klõpsake nuppu. Kui see on puutetundlik seade, saate kinnitada, et see töötab puudutusega.

Ekraanil olev pulk

On-Screen Stick võimaldab teil puudutusega liigutada esemeid, näiteks pulki. Pulga liigutamisel on võimalik seda simuleerida nii, nagu oleksite mängupulti liigutanud. Lisaks puudutusele on võimalik seda ka hiirega liigutada.

Asetab ekraanile nupuobjekti, millest saab puutepulk. Me kasutame siin nuppu, kuid see töötab ka muude objektidega peale nuppude.

Valige jaotises Add Component (Lisa komponent) suvand Input > On-Screen Stick.

Valige Control Pathist tegevuskaardil määratletud Gamepad LeftStick.

Käivitage mäng ja proovige lohistada nuppu Stick. Nupud liiguvad ringis, justkui liigutaksid keppi. Loomulikult saate ka kontrollida, kas sisendsisu on töötamise ajal toodud.

Sel juhul oleme paigutanud nupu, kuid on võimalik muuta see ka virtuaalseks pulgaks, asetades ümmarguse raami ja ümmarguse pulgaobjekti.

Muide, seda liikuvat vahemikku saab muuta ekraanipulga "liikumisvahemikus".