Циклично преминаване през избора на обекти на потребителския интерфейс

Страницата се актуализира :
Дата на създаване на страница :

Среда за проверка

Уиндоус
  • Прозорци 11
Редактор на единство
  • 2020.3.25ф1

Предпоставки за този съвет

Следните настройки са направени предварително като предпоставка за обяснението на тези съвети.

препратка

Разполагане на примерни обекти на потребителския интерфейс

Поставете бутона върху платното, както следва: Избраният обект се показва в зелено за по-голяма яснота.

Можете да избирате само обекти, които са в избраната посока.

Когато поставите обект на потребителския интерфейс, можете първоначално да натиснете клавишите със стрелки на клавиатура или геймпад, за да изберете обекта на потребителския интерфейс в указаната посока. Това е много интуитивно и лесно за разбиране, така че не мисля, че трябва да се притеснявате да променяте настройките.

Въпреки това, в оформление, подобно на меню, не е възможно да се извърши операция за цикъл на избор, като например "връщане в горната част, когато натиснете надолу, докато дъното е избрано" по подразбиране.

На фигурата по-горе не можете да изберете Бутон1, като натиснете надолу, докато е избран Бутон3. Разбира се, ако натиснете нагоре, докато е избран Button1, няма да можете да изберете Button3.

Циклично преминаване през селекции

Тук ще създадем механизъм, който ви позволява да преминавате през селекциите безкрайно. В примерното оформление можете да изберете Бутон1, като натиснете надолу, докато е избран Бутон3, и можете да изберете Бутон3, като натиснете нагоре, докато е избран Бутон1.

Тази контрола се извършва в скрипт. Това е скрипт с общо предназначение, който може да се използва с малък брой описания и може да се използва, както е в други сцени. Вместо това се прилагат следните ограничения:

  • Можете да се движите само нагоре и надолу в една посока.
  • Прилага се за всички Selectable съществуващи под указания обект

Следователно целта на използване е ограничена до менюта, които са избрани чрез превъртане нагоре и надолу, но е много полезно, ако се ограничите до това оформление. Между другото, той е ограничен до горната и долната част, но ако промените скрипта малко, можете да го ограничите до ляво и дясно.

Създайте скрипт във вашия проект. Можете да го наречете всичко, но аз ще SelectLoop го оставя като .

Сценарият изглежда така:

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

Това, което правим, е да направим следните настройки за поведението navigation при избор на ключ .

  • Натиснете клавиша нагоре, за да изберете предишния обект, и изберете последния обект, за да изберете първия обект.
  • Натиснете клавиша надолу, за да изберете следващия обект, или изберете първия обект, ако е последният обект.

Между другото, редът на този обект (Избираем) зависи от реда на йерархията. Подредете ги в реда, в който искате да бъдат избрани в йерархията.

След като запишете скрипта, прикачете го като компонент. Този скрипт ще бъде приложен към прикачения обект Selectable , така че този път Canvas ще прикачим към .

Опитайте да го преместите и вижте дали можете да го преместите между Button1 и Button3 с натискане на клавиш.