Hurok a felhasználói felület objektumainak kijelölésén
Ellenőrzési környezet
- Windows
-
- Windows 11 esetén
- Unity-szerkesztő
-
- 2020.3.25f1
A tipp előfeltételei
A következő beállításokat előre elvégeztük a tippek magyarázatának előfeltételeként.
utalás
Minta felhasználói felületi objektumok telepítése
Helyezze a gombot a vászonra az alábbiak szerint: A kijelölt objektum zöld színnel jelenik meg az áttekinthetőség érdekében.
Csak a kijelölt irányban lévő objektumokat jelölheti ki.
Felhasználói felületi objektum elhelyezésekor először a billentyűzet vagy a játékvezérlő nyílbillentyűinek megnyomásával jelölheti ki a felhasználói felületi objektumot a megadott irányba. Ez nagyon intuitív és könnyen érthető, ezért nem hiszem, hogy bajlódnia kell a beállítások megváltoztatásával.
Menüszerű elrendezésben azonban alapértelmezés szerint nem lehet olyan kiválasztási hurokműveletet végrehajtani, mint például a "visszatérés a tetejére, amikor lenyomja, miközben az alsó ki van jelölve".
A fenti ábrán nem választhatja ki a Button1 gombot a Button down gomb megnyomásával, miközben a Button3 van kiválasztva. Természetesen, ha megnyomja a felfelé gombot, miközben a Button1 van kiválasztva, akkor nem fogja tudni kiválasztani a Button3 gombot.
Kijelölések ismétlése
Itt létrehozunk egy mechanizmust, amely lehetővé teszi, hogy végtelenül végigjárja a választásokat. A mintaelrendezésben kiválaszthatja a Button1 gombot a Button3 gomb kijelölése közben a down gomb lenyomásával, a Button3 kiválasztásához pedig a Button1 gomb kijelölése közben a up gomb megnyomásával.
Ez a vezérlés egy szkriptben történik. Ez egy általános célú szkript, amely kis számú leírással használható, és ugyanúgy használható, mint más jelenetekben. Ehelyett a következő korlátozások érvényesek:
- Csak egy irányba mozoghat fel és le.
- A megadott objektum alatt létező összes
Selectable
objektumra vonatkozik
Ezért a használat célja a felfelé és lefelé görgetéssel kiválasztott menükre korlátozódik, de nagyon hasznos, ha erre az elrendezésre korlátozódik. Egyébként a felső és alsó részre korlátozódik, de ha egy kicsit módosítja a szkriptet, akkor balra és jobbra korlátozhatja.
Hozzon létre egy szkriptet a projektben. Bármit megnevezhetsz, de én meghagyom SelectLoop
.
A szkript így néz ki:
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() { }
}
Amit teszünk, az a következő beállítások a kulcsválasztási viselkedéshez navigation
.
- Nyomja le a fel billentyűt az előző objektum kijelöléséhez, és jelölje ki az utolsó objektumot az első objektum kijelöléséhez.
- Nyomja le a le billentyűt a következő objektum kijelöléséhez, vagy jelölje ki az első objektumot, ha az az utolsó.
Egyébként ennek az objektumnak a sorrendje (kiválasztható) a hierarchia sorrendjétől függ. Rendezze őket abba a sorrendbe, amelyben ki szeretné őket választani a hierarchiában.
A szkript mentése után csatolja összetevőként.
Ez a szkript lesz alkalmazva a csatolt objektumban Selectable
, így ezúttal Canvas
csatoljuk .
Próbálja meg mozgatni, és nézze meg, hogy egy billentyűleütéssel mozgathatja-e a Button1 és a Button3 között.