Izmantojiet skārienvadībai optimizētas ievades vadīklas ar ekrāna vadību

Lapa atjaunota :
Lapas izveides datums :

Verifikācijas vide

Windows
  • Operētājsistēmā Windows 11
Vienotības redaktors
  • 2020.3.25f1
Ievades sistēmas pakete
  • 1.2.0

Priekšnoteikumi šim padomam

Tālāk norādītie iestatījumi ir veikti iepriekš kā priekšnoteikums šī padoma aprakstam.

Jums jāzina arī šādi padomi:

Par ekrāna vadību skārienvadībai

Es bieži izmantoju tastatūru vai spēļu paneli, lai spēlētu spēles. Ierīcēs, kuras var darbināt tikai ar pieskārienu, piemēram, viedtālruņos, jūs spēlēsit spēli ar pieskārienu.

Unity ievades sistēmas pakotne izmanto ekrāna vadību, lai simulētu skārienu mijiedarbību tā, it kā to kontrolētu kontrolieris.

Pirms ekrānā redzamās vadības

Šis raksts ir nedaudz garš, taču šī tēma nav tieši saistīta ar ekrāna vadību. Ja ievades sistēmas pakotni varat izmantot citās darbībās, lai pārbaudītu ievadi, piemēram, gamepad, tas ir labi.

Šajā padomā mēs izveidosim rīcības karti. Apraksta, kā simulēt pieskaršanos spēļu panelim tā, it kā jūs ar to mijiedarbotos.

Starp citu, tā atbalsta arī metodi, kā izmantot klases un Gamepad klases skriptosKeyboard, nevis darbības kartēs. Šoreiz es to nepaskaidrošu, bet, ja vēlaties to izmēģināt ar šīm klasēm, tā vietā varat sagatavot kodu, kas aprakstīts nākamajā lapā.

Vispirms novietojiet teksta objektu uz audekla, lai parādītu ievades. Vēlāk mēs novietosim skārienjutīgo objektu apakšā, tāpēc atstājiet vietu.

Vispirms izveidojiet rīcības karti šādi: Jūs veidojat to pašu darbību, ko veicāt, kad aprakstījāt darbību karti.

Tā kā darbības kartes skaidrojums nav galvenais, saistīšana ir vienkārša. Lūdzu, skatiet nākamo lapu, lai iegūtu sīkāku informāciju par rīcības kartēm.

Šoreiz ievades iegūšana tiek veikta ar skriptu, nevis "Sūtīt ziņojumus" vai "Izsaukt vienotības notikumus". Tas neaprobežojas tikai ar skriptiem, un tas darbojas pareizi, pat ja izmantojat "Sūtīt ziņojumus" utt.

Pārliecinieties, vai esat ģenerējis kodu no darbību kartes.

Skripts izskatās šādi: Tas ir gandrīz tāds pats kā skaidrojot rīcības karti.

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

Skripts EventSystem ir pievienots .

Palaidiet spēli, lai redzētu, vai tā darbojas kā darbības karte.

Poga Ekrānā

Ekrāna poga simulē spēļu paneļa pogu nospiešanu, piemēram, A un B, un tastatūras taustiņus, kad pieskaraties kādam objektam ekrānā. Starp citu, tas saka pieskārienu, bet tas darbojas arī ar peles klikšķiem.

Vispirms novietojiet pogu ekrānā. Tā kā jūs vienkārši pievienojat komponentu, tas darbojas ar objektiem, kas nav pogas.

Pievienojiet ievades > ekrāna pogu no komponenta.

Iestatiet Gamepad's Button East no Control Path. Tas liek izskatīties tā, it kā, pieskaroties, Gamepad poga uz austrumiem būtu nospiesta.

Pārliecinieties, ka uzbrukums parādās, kad palaižat spēli, un noklikšķiniet uz pogas. Ja tā ir skārienjutīga ierīce, varat apstiprināt, ka tā darbojas ar pieskārienu.

Ekrāna nūja

Ekrāna nūja ļauj ar pieskārienu pārvietot objektus, piemēram, nūjas. Pārvietojot nūju, ir iespējams to simulēt tā, it kā jūs būtu pārvietojis spēļu paliktņa nūju. Papildus pieskārienam ir iespējams to pārvietot arī ar peli.

Ekrānā novieto pogas objektu, kas būs skārienjutīgs līdzeklis. Mēs šeit izmantojam pogu, bet tā darbojas arī ar objektiem, kas nav pogas.

Sadaļā Pievienot komponentu atlasiet Ievade > ekrāna nūja.

Sadaļā Control Path (Vadības ceļš) atlasiet darbības kartē definēto Gamepad LeftStick (Gamepad LeftStick).

Palaidiet spēli un mēģiniet vilkt nūjas pogu. Pogas pārvietojas pa apli, it kā pārvietotu nūju. Protams, varat arī pārbaudīt, vai ievades saturs tiek ienests, kamēr tas darbojas.

Šajā gadījumā mēs esam ievietojuši pogu, bet ir iespējams arī padarīt to līdzīgu virtuālai nūjai, ievietojot apļveida rāmi un apaļu nūjas objektu.

Starp citu, šo pārvietojamo diapazonu var mainīt ekrāna nūjas "Kustību diapazonā".