Получение списка созданных вами языковых стандартов
Среда верификации
- Виндоус
-
- 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
т.к. не инициализируется.
Через некоторое время вы сможете увидеть список языковых стандартов, зарегистрированных в раскрывающемся списке. Если вы попытаетесь переключить элементы, вы увидите, что содержимое текста меняется.