Buclă prin selecția obiectelor UI

Pagina actualizată :
Data creării paginii :

Mediul de verificare

Windows
  • Ferestre 11
Unity Editor
  • 2020.3.25F1

Cerințe preliminare pentru acest sfat

Următoarele setări au fost făcute în avans ca o condiție prealabilă pentru explicarea acestor sfaturi.

referință

Implementarea obiectelor UI eșantion

Plasați butonul pe Planșă după cum urmează: Obiectul selectat este afișat cu verde pentru claritate.

Puteți selecta numai obiecte care se află în direcția selectată.

Când plasați un obiect UI, puteți apăsa inițial tastele săgeată de pe o tastatură sau gamepad pentru a selecta obiectul UI în direcția specificată. Acest lucru este foarte intuitiv și ușor de înțeles, așa că nu cred că trebuie să vă deranjați să schimbați setările.

Cu toate acestea, într-un aspect asemănător meniului, nu este posibil să efectuați o operație de buclă de selecție, cum ar fi "reveniți în partea de sus când apăsați în jos în timp ce partea de jos este selectată" în mod implicit.

În figura de mai sus, nu puteți selecta Button1 apăsând în jos în timp ce este selectat Button3. Desigur, dacă apăsați în sus în timp ce este selectat Button1, nu veți putea selecta Button3.

Parcurgerea în buclă a selecțiilor

Aici, vom crea un mecanism care vă permite să parcurgeți selecțiile la nesfârșit. În aspectul eșantion, puteți selecta Button1 apăsând în jos în timp ce este selectat Button3 și puteți selecta Button3 apăsând în sus în timp ce este selectat Button1.

Acest control se face într-un script. Este un script de uz general care poate fi folosit cu un număr mic de descrieri și poate fi folosit așa cum este în alte scene. În schimb, se aplică următoarele restricții:

  • Vă puteți deplasa în sus și în jos într-o singură direcție.
  • Se aplică tuturor celor Selectable existente sub obiectul specificat

Prin urmare, ținta de utilizare este limitată la meniurile selectate prin derularea în sus și în jos, dar este foarte util dacă vă limitați la acel aspect. Apropo, este limitat la partea de sus și de jos, dar dacă modificați puțin scriptul, îl puteți face limitat la stânga și la dreapta.

Creați un script în proiectul dvs. Puteți să-l numiți orice, dar îl voi SelectLoop lăsa ca .

Scenariul arată astfel:

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

Ceea ce facem este să facem următoarele setări pentru comportamentul navigation de selecție a tastelor .

  • Apăsați tasta sus pentru a selecta obiectul anterior și selectați ultimul obiect pentru a selecta primul obiect.
  • Apăsați tasta în jos pentru a selecta următorul obiect sau selectați primul obiect dacă este ultimul obiect.

Apropo, ordinea acestui obiect (selectabil) depinde de ordinea ierarhiei. Aranjați-le în ordinea în care doriți să fie selectate în ierarhie.

După salvarea scriptului, atașați-l ca o componentă. Acest script va fi aplicat în obiectul Selectable atașat , așa că de data Canvas aceasta ne vom atașa la .

Încercați să o mutați și vedeți dacă o puteți muta între Button1 și Button3 cu o apăsare de tastă.