Przechodzenie w pętli przez wybór obiektów interfejsu użytkownika
Ś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.