Zanka med izbiro predmetov uporabniškega vmesnika

Stran posodobljena :
Datum ustvarjanja strani :

Okolje za preverjanje

Windows
  • Windows 11
Urejevalnik Unity
  • 2020.3.25F1

Predpogoji za ta nasvet

Naslednje nastavitve so bile vnaprej narejene kot predpogoj za razlago teh nasvetov.

Referenčni

Uvajanje vzorčnih predmetov uporabniškega vmesnika

Gumb postavite na platno na naslednji način: Izbrani predmet je zaradi jasnosti prikazan zeleno.

Izberete lahko samo predmete, ki so v izbrani smeri.

Ko postavite predmet uporabniškega vmesnika, lahko najprej pritisnete puščične tipke na tipkovnici ali igralni konzoli, da izberete predmet uporabniškega vmesnika v določeni smeri. To je zelo intuitivno in lahko razumljivo, zato mislim, da se vam ni treba truditi spreminjati nastavitev.

Vendar pa v postavitvi, podobni meniju, privzeto ni mogoče izvesti operacije izbirne zanke, kot je »vrnitev na vrh, ko pritisnete navzdol, medtem ko je dno izbrano«.

Na zgornji sliki ne morete izbrati Button1 s pritiskom navzdol, medtem ko je izbran Button3. Seveda, če pritisnete navzgor, medtem ko je izbran Button1, ne boste mogli izbrati Button3.

Zanka med izbori

Tukaj bomo ustvarili mehanizem, ki vam omogoča, da se neskončno prebijate skozi izbire. V vzorčni postavitvi lahko izberete Button1 tako, da pritisnete navzdol, medtem ko je izbran Button3, in lahko izberete Button3 tako, da pritisnete navzgor, medtem ko je izbran Button1.

Ta kontrolnik se izvede v skriptu. To je skript za splošne namene, ki se lahko uporablja z majhnim številom opisov in se lahko uporablja kot v drugih prizorih. Namesto tega veljajo naslednje omejitve:

  • Premikate se lahko samo gor in dol v eno smer.
  • Velja za vse Selectable obstoječe pod določenim predmetom

Zato je cilj uporabe omejen na menije, ki so izbrani s pomikanjem navzgor in navzdol, vendar je zelo uporabno, če se omejite na to postavitev. Mimogrede, omejen je na vrh in dno, če pa skript nekoliko spremenite, ga lahko omejite na levo in desno.

Ustvarite skript v projektu. Lahko ga poimenujete karkoli, vendar ga bom SelectLoop pustil kot .

Scenarij izgleda takole:

using UnityEngine;
using UnityEngine.UI;  // 追加

public class SelectLoop : MonoBehaviour
{
  // 最初のフレーム更新の前に開始が呼び出されます
  void Start()
  {
    // ボタンなど選択可能なコンポーネントを取得する
    var selects = GetComponentsInChildren<Selectable>();
    for (var i = 0; i < selects.Length; i++)
    {
      var nav = selects[i].navigation;
      nav.mode = Navigation.Mode.Explicit;
      nav.selectOnUp = selects[i == 0 ? selects.Length - 1 : i - 1];
      nav.selectOnDown = selects[(i + 1) % selects.Length];
      selects[i].navigation = nav;
    }
  }

  // 更新はフレームごとに1回呼び出されます
  void Update() { }
}

Kar počnemo, je, da naredimo naslednje nastavitve za vedenje navigation pri izbiri ključev.

  • Pritisnite tipko navzgor, da izberete prejšnji predmet, in izberite zadnji predmet, da izberete prvi predmet.
  • Pritisnite tipko dol, da izberete naslednji predmet, ali izberite prvi predmet, če je zadnji predmet.

Mimogrede, vrstni red tega predmeta (izbirljiv) je odvisen od vrstnega reda hierarhije. Razporedite jih v vrstnem redu, v katerem želite, da so izbrani v hierarhiji.

Ko shranite skript, ga priložite kot komponento. Ta skript bo uporabljen v priloženem predmetu Selectable , zato bomo tokrat Canvas priložili .

Poskusite ga premakniti in preverite, ali ga lahko s pritiskom tipke premaknete med Button1 in Button3.