Feu un bucle a través de la selecció d'objectes de la interfície d'usuari

Pàgina actualitzada :
Data de creació de la pàgina :

Entorn de verificació

Windows
  • Finestres 11
Editor d'unitat
  • 25.3.2020

Requisits previs per a aquest consell

Els següents paràmetres s'han fet amb antelació com a requisit previ per a l'explicació d'aquests consells.

referència

Desplegament d'objectes d'interfície d'usuari d'exemple

Col·loqueu el botó del llenç de la manera següent: L'objecte seleccionat es mostra en verd per a més claredat.

Només podeu seleccionar objectes en la direcció seleccionada.

Quan col·loqueu un objecte de la interfície d'usuari, inicialment podeu prémer les tecles de fletxa d'un teclat o gamepad per seleccionar l'objecte de la interfície d'usuari en la direcció especificada. Això és molt intuïtiu i fàcil d'entendre, de manera que no crec que us hàgiu de molestar a canviar la configuració.

Tanmateix, en un disseny semblant al menú, no és possible realitzar una operació de bucle de selecció com ara "tornar a la part superior quan premeu cap avall mentre se selecciona la part inferior".

A la figura anterior, no podeu seleccionar Button1 prement cap avall mentre se selecciona Button3. Per descomptat, si premeu cap amunt mentre esteu seleccionat Button1, no podreu seleccionar Button3.

Bucle a través de seleccions

Aquí, crearem un mecanisme que us permeti fer un bucle a través de les seleccions sense parar. Al disseny d'exemple, podeu seleccionar Button1 prement cap avall mentre se selecciona Button3 i podeu seleccionar Button3 prement cap amunt mentre se selecciona Button1.

Aquest control es realitza en un script. És un guió de propòsit general que es pot utilitzar amb un nombre reduït de descripcions i es pot utilitzar com en altres escenes. En lloc d'això, s'apliquen les restriccions següents:

  • Només es pot moure amunt i avall en una direcció.
  • S'aplica a tots els Selectable existents sota l'objecte especificat

Per tant, l'objectiu d'ús es limita als menús que se seleccionen desplaçant-se cap amunt i cap avall, però és molt útil si us limiteu a aquest disseny. Per cert, es limita a la part superior i inferior, però si modifiqueu una mica l'script, podeu limitar-lo a l'esquerra i a la dreta.

Creeu un script al vostre projecte. Pots anomenar-lo qualsevol cosa, però ho deixaré SelectLoop com .

El guió té aquest aspecte:

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

El que estem fent és fer els següents paràmetres per al comportament navigation de selecció de claus .

  • Premeu la tecla amunt per seleccionar l'objecte anterior i seleccioneu l'últim objecte per seleccionar el primer objecte.
  • Premeu la tecla avall per seleccionar el següent objecte o seleccioneu el primer objecte si és l'últim.

Per cert, l'ordre d'aquest objecte (seleccionable) depèn de l'ordre de la jerarquia. Ordeneu-los en l'ordre en què vulgueu que se seleccionin a la jerarquia.

Després de desar l'script, adjunteu-lo com a component. Aquest script s'aplicarà a l'objecte Selectable adjunt , de manera que aquesta vegada Canvas adjuntarem a .

Proveu de moure'l i comproveu si el podeu moure entre el botó 1 i el botó 3 amb una pulsació de tecles.