Hurok a felhasználói felület objektumainak kijelölésén

Oldal frissítve :
Oldal létrehozásának dátuma :

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.