Получаване на списък с езикови променливи, които сте създали
Среда за проверка
- Уиндоус
-
- Прозорци 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
защото не е инициализиран.
След известно време би трябвало да можете да видите списъка с езикови променливи, регистрирани в падащото меню. Ако се опитате да превключите елементи, би трябвало да можете да видите, че съдържанието на текста се променя.