Получение списка созданных вами языковых стандартов

Страница обновлена :
Дата создания страницы :

Среда верификации

Виндоус
  • Windows 11
Редактор Unity
  • 2021.3.12f1
Система ввода (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 т.к. не инициализируется.

Через некоторое время вы сможете увидеть список языковых стандартов, зарегистрированных в раскрывающемся списке. Если вы попытаетесь переключить элементы, вы увидите, что содержимое текста меняется.