Scorrere la selezione degli oggetti dell'interfaccia utente

Pagina aggiornata :
Data di creazione della pagina :

Ambiente di verifica

Finestre
  • finestre 11
Unity Editor
  • 2020.3.25f1

Prerequisiti per questo suggerimento

Le seguenti impostazioni sono state effettuate in anticipo come prerequisito per la spiegazione di questi suggerimenti.

riferimento

Distribuzione di oggetti dell'interfaccia utente di esempio

Posiziona il pulsante sull'area di lavoro come segue: L'oggetto selezionato viene visualizzato in verde per maggiore chiarezza.

È possibile selezionare solo gli oggetti che si trovano nella direzione selezionata.

Quando si posiziona un oggetto dell'interfaccia utente, è possibile premere inizialmente i tasti di direzione su una tastiera o un gamepad per selezionare l'oggetto dell'interfaccia utente nella direzione specificata. Questo è molto intuitivo e facile da capire, quindi non credo che tu debba preoccuparti di modificare le impostazioni.

Tuttavia, in un layout simile a un menu, non è possibile eseguire un'operazione di ciclo di selezione come "torna all'inizio quando si preme verso il basso mentre è selezionata la parte inferiore" per impostazione predefinita.

Nella figura sopra, non è possibile selezionare il pulsante 1 premendo verso il basso mentre è selezionato il pulsante 3. Naturalmente, se si preme verso l'alto mentre è selezionato il pulsante 1, non sarà possibile selezionare il pulsante 3.

Scorrere le selezioni

Qui, creeremo un meccanismo che ti consentirà di scorrere le selezioni all'infinito. Nel layout di esempio, è possibile selezionare Pulsante1 premendo verso il basso mentre è selezionato Pulsante3 ed è possibile selezionare Pulsante3 premendo verso l'alto mentre è selezionato Pulsante1.

Questo controllo viene eseguito in uno script. Si tratta di uno script generico che può essere utilizzato con un numero limitato di descrizioni e può essere utilizzato così com'è in altre scene. Si applicano invece le seguenti restrizioni:

  • Puoi muoverti solo su e giù in una direzione.
  • Si applica a tutti gli Selectable oggetti esistenti nell'oggetto specificato

Pertanto, il target di utilizzo è limitato ai menu che si selezionano scorrendo verso l'alto e verso il basso, ma è molto utile se ci si limita a quel layout. A proposito, è limitato in alto e in basso, ma se modifichi un po' lo script, puoi renderlo limitato a sinistra e a destra.

Creare uno script nel progetto. Puoi chiamarlo come qualsiasi cosa, ma lo lascerò SelectLoop come .

Lo script è simile al seguente:

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

Quello che stiamo facendo è fare le seguenti impostazioni per il comportamento navigation di selezione dei tasti .

  • Premere il tasto su per selezionare l'oggetto precedente e selezionare l'ultimo oggetto per selezionare il primo oggetto.
  • Premere il tasto giù per selezionare l'oggetto successivo oppure selezionare il primo oggetto se è l'ultimo oggetto.

A proposito, l'ordine di questo oggetto (Selectable) dipende dall'ordine della gerarchia. Disporli nell'ordine in cui si desidera selezionarli nella gerarchia.

Dopo aver salvato lo script, collegarlo come componente. Questo script verrà applicato all'oggetto Selectable collegato, quindi questa volta Canvas ci collegheremo a .

Prova a spostarlo e vedi se riesci a spostarlo tra Button1 e Button3 con una pressione di un tasto.