Slučka cez výber objektov používateľského rozhrania

Stránka aktualizovaná :
Dátum vytvorenia strany :

Prostredie overovania

Windows
  • Windows 11
Editor jednoty
  • 2020.3.25f1

Predpoklady pre tento tip

Nasledujúce nastavenia boli vykonané vopred ako predpoklad pre vysvetlenie týchto tipov.

referencia

Nasadenie vzorových objektov používateľského rozhrania

Umiestnite tlačidlo na plátno nasledovne: Vybratý objekt sa kvôli prehľadnosti zobrazí zelenou farbou.

Môžete vybrať iba objekty, ktoré sú vo vybratom smere.

Keď umiestnite objekt používateľského rozhrania, môžete najprv stlačiť klávesy so šípkami na klávesnici alebo gamepade a vybrať objekt používateľského rozhrania v určenom smere. Je to veľmi intuitívne a ľahko pochopiteľné, takže si nemyslím, že sa musíte obťažovať zmenou nastavení.

V rozložení podobnom ponuke však nie je možné predvolene vykonať operáciu slučky výberu, ako napríklad "návrat na začiatok po stlačení tlačidla nadol, zatiaľ čo je vybratá spodná časť".

Na obrázku vyššie nemôžete vybrať položku Tlačidlo1 stlačením tlačidla nadol, keď je vybratá možnosť Tlačidlo3. Samozrejme, ak stlačíte tlačidlo1, nebudete môcť vybrať Tlačidlo3.

Opakovanie cez výbery

Tu vytvoríme mechanizmus, ktorý vám umožní donekonečna prechádzať výbermi. Vo vzorovom rozložení môžete vybrať tlačidlo 1 stlačením tlačidla nadol, keď je vybraté tlačidlo 3, a môžete vybrať tlačidlo 3 stlačením tlačidla, keď je vybraté tlačidlo 1.

Tento ovládací prvok sa vykonáva v skripte. Je to univerzálny skript, ktorý môže byť použitý s malým počtom popisov a môže byť použitý tak, ako je to v iných scénach. Namiesto toho platia nasledujúce obmedzenia:

  • Môžete sa pohybovať hore a dole iba jedným smerom.
  • Vzťahuje sa na všetky Selectable existujúce pod zadaným objektom

Preto je cieľ použitia obmedzený na ponuky, ktoré sa vyberajú posúvaním nahor a nadol, ale je veľmi užitočné, ak sa obmedzíte na toto rozloženie. Mimochodom, je obmedzený na hornú a dolnú časť, ale ak skript trochu upravíte, môžete ho obmedziť na ľavú a pravú stranu.

Vytvorte skript v projekte. Môžete to pomenovať čokoľvek, ale nechám SelectLoop to ako .

Skript vyzerá takto:

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() { }
}

To, čo robíme, je vykonanie nasledujúcich nastavení pre správanie výberu navigation kľúča .

  • Stlačením klávesu nahor vyberte predchádzajúci objekt a vyberte posledný objekt na výber prvého objektu.
  • Stlačením klávesu nadol vyberte ďalší objekt alebo vyberte prvý objekt, ak ide o posledný objekt.

Mimochodom, poradie tohto objektu (voliteľné) závisí od poradia hierarchie. Usporiadajte ich v poradí, v akom ich chcete vybrať v hierarchii.

Po uložení skriptu ho priložte ako komponent. Tento skript bude použitý v priloženom objekte Selectable , takže tentokrát Canvas pripojíme k .

Skúste ho presunúť a zistite, či ho môžete presunúť medzi tlačidlami1 a tlačidlom3 stlačením klávesu.