Получаване на списък с езикови променливи, които сте създали

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

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

Уиндоус
  • Прозорци 11
Редактор на единство
  • 2021.3.12е1
Входна система (Unity Technologies)
  • 1.4.4
Локализация (Unity Technologies)
  • 1.3.2

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

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

Цели на нашите съвети

Показва списък със съответните езикови променливи в падащия потребителски интерфейс и превключва показвания текст, за да съответства на езиковата променлива, избрана от потребителя.

Предварителни знания и подготовка

Този съвет предполага локализация на следния текст: Първо, моля, вижте следните съвети, за да се подготвите за показване на локализиран текст.

Падащо разположение за промяна на езиковата променлива

Предоставя падащо меню за показване на списък с езикови променливи. Трябва само да можете да показвате и избирате, затова се уверете, че параметрите на потребителския интерфейс са зададени по подходящ начин.

Получаване на списък с езикови променливи

Можете да получите списък на езиковите променливи, LocalizationSettings.AvailableLocales.Locales създадени в . Ако използвате това и го настроите на падащото меню в началото на сцената, вие сте добре. Инициализацията обаче може да не е завършила, когато Localization стартирате играта, така че може да се наложи да изчакате тя да завърши.

Първо, създайте скрипт. DropDownEvent Оставете името като .

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

using UnityEngine;
using UnityEngine.Localization.Settings;
using UnityEngine.UI;

public class DropDownEvent : MonoBehaviour
{
  // 最初のフレームアップデートの前に開始が呼び出されます
  async void Start()
  {
    // Localization の初期化が完了するまで待機します
    await LocalizationSettings.InitializationOperation.Task;

    // 処理対象の Dropdown コンポーネントを取得します
    var dropdownLocale = GetComponent<Dropdown>();
    dropdownLocale.options.Clear();

    // LocalizationSettings.AvailableLocales.Locales からロケール一覧を取得してオプションを追加します
    foreach (var locale in LocalizationSettings.AvailableLocales.Locales)
    {
      dropdownLocale.options.Add(new Dropdown.OptionData(locale.name));
    }

    // 初期選択されているロケールのインデックスを取得して選択します
    dropdownLocale.value = LocalizationSettings.AvailableLocales.Locales.IndexOf(LocalizationSettings.SelectedLocale);

    // ドロップダウンのアイテムが選択されたときにロケールを変更します
    dropdownLocale.onValueChanged.AddListener((index) =>
    {
      LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[index];
    });
  }
}

Start Методът извършва обработка в началото на сцената, но в този момент Localization инициализацията на може да не е завършена. await LocalizationSettings.InitializationOperation.Task Изчакайте инициализацията да завърши. await , така че Start , моля, добавете го към метода async .

LocalizationSettings.AvailableLocales.Locales След това съдържа списък с езикови променливи, които сте създали, така че foreach обработвайте толкова езикови променливи, колкото искате. Dropdown.OptionData Задайте Dropdown името на езиковата променлива на и го добавете към .

За да изберете Dropdown.value текущата езикова променлива в падащото меню, потърсете целевата езикова променлива в свойството и задайте индекса.

Това е краят на създаването на списъка, но също така искам да включа процес, който променя езиковата променлива, когато е избран падащият елемент. onValueChanged Добавя превключване на езиковата променлива към събитието. Това е същото като предишния съвет.

Прикачете скрипта, който сте създали, към падащото меню.

Изпълнение и проверка

Опитайте се да стартирате играта, за да я проверите. Има време, когато списъкът с езикови променливи не е зададен веднага след началото на играта, Localization защото не е инициализиран.

След известно време би трябвало да можете да видите списъка с езикови променливи, регистрирани в падащото меню. Ако се опитате да превключите елементи, би трябвало да можете да видите, че съдържанието на текста се променя.