Przechodzenie w pętli przez wybór obiektów interfejsu użytkownika

Strona zaktualizowana :
Data utworzenia strony :

Środowisko weryfikacyjne

Windows
  • Okna 11
Edytor aparatu Unity
  • 2020.3.25f1

Wymagania wstępne dotyczące tej porady

Poniższe ustawienia zostały wcześniej wprowadzone jako warunek objaśnienia tych wskazówek.

odniesienie

Wdrażanie przykładowych obiektów interfejsu użytkownika

Umieść przycisk na płótnie w następujący sposób: Zaznaczony obiekt jest wyświetlany na zielono w celu zwiększenia przejrzystości.

Można wybierać tylko te obiekty, które znajdują się w wybranym kierunku.

Po umieszczeniu obiektu interfejsu użytkownika możesz najpierw nacisnąć strzałek na klawiaturze lub gamepadzie, aby wybrać obiekt interfejsu użytkownika w określonym kierunku. Jest to bardzo intuicyjne i łatwe do zrozumienia, więc nie sądzę, że musisz zawracać sobie głowę zmianą ustawień.

Jednak w układzie przypominającym menu nie jest możliwe wykonanie operacji pętli zaznaczenia, takiej jak "powrót na górę po naciśnięciu, gdy wybrany jest dół".

Na powyższym rysunku nie można wybrać Przycisku1, naciskając w dół, gdy wybrany jest Przycisk3. Oczywiście, jeśli naciśniesz przycisk w górę, gdy wybrany jest Przycisk1, nie będziesz mógł wybrać Przycisk3.

Zapętlanie zaznaczeń

Tutaj stworzymy mechanizm, który pozwoli Ci zapętlać się między wyborami w nieskończoność. W przykładowym układzie można wybrać pozycję Przycisk1, naciskając przycisk w dół, gdy jest zaznaczony przycisk Przycisk3, a następnie wybrać pozycję Przycisk3, naciskając przycisk w górę, gdy jest zaznaczony przycisk Przycisk1.

Ta kontrolka jest wykonywana w skrypcie. Jest to skrypt ogólnego przeznaczenia, który może być używany z niewielką liczbą opisów i może być używany tak jak w innych scenach. Zamiast tego obowiązują następujące ograniczenia:

  • Możesz poruszać się w górę i w dół tylko w jednym kierunku.
  • Dotyczy wszystkich Selectable istniejących w określonym obiekcie

Dlatego cel użycia jest ograniczony do menu, które są wybierane przez przewijanie w górę iw dół, ale jest to bardzo przydatne, jeśli ograniczysz się do tego układu. Nawiasem mówiąc, jest ograniczony do góry i dołu, ale jeśli trochę zmodyfikujesz skrypt, możesz go ograniczyć do lewej i prawej strony.

Utwórz skrypt w swoim projekcie. Możesz to nazwać dowolnie, ale zostawię SelectLoop to jako .

Skrypt wygląda tak:

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, co robimy, to wprowadzanie następujących ustawień zachowania navigation wyboru klucza .

  • Naciśnij w górę, aby zaznaczyć poprzedni obiekt, a następnie wybierz ostatni obiekt, aby zaznaczyć pierwszy obiekt.
  • Naciśnij w dół, aby zaznaczyć następny obiekt, lub wybierz pierwszy obiekt, jeśli jest to ostatni obiekt.

Nawiasem mówiąc, kolejność tego obiektu (do wyboru) zależy od kolejności hierarchii. Ułóż je w kolejności, w jakiej mają być zaznaczone w hierarchii.

Po zapisaniu skryptu dołącz go jako komponent. Skrypt ten zostanie zastosowany w dołączonym obiekcie Selectable , więc tym razem Canvas dołączymy do .

Spróbuj go przesunąć i sprawdź, czy możesz go przenieść między przyciskami1 i przyciskami3 za pomocą naciśnięcia.