Sukurkite lokalių sąrašą

Puslapis atnaujintas :
Puslapio sukūrimo data :

Tikrinimo aplinka

Windows
  • Langai 11
"Unity" redaktorius
  • 2021.3.12f1
Įvesties sistema ("Unity Technologies")
  • 1.4.4
Lokalizavimas ("Unity Technologies")
  • 1.3.2

Būtinos šio patarimo sąlygos

Šie nustatymai buvo atlikti iš anksto kaip šio patarimo aprašymo prielaida.

Mūsų patarimų tikslai

Išplečiamojoje vartotojo sąsajoje rodo atitinkamų lokalių sąrašą ir perjungia rodymo tekstą, kad jis atitiktų vartotojo pasirinktą lokalę.

Būtinos žinios ir pasirengimas

Šiame patarime daroma prielaida, kad lokalizuojamas šis tekstas: Pirmiausia perskaitykite šiuos patarimus, kaip pasiruošti rodyti lokalizuotą tekstą.

Lokalės keitimo išplečiamoji paskirties vieta

Pateikia išplečiamąjį sąrašą, kuriame rodomas lokalių sąrašas. Jums tereikia turėti galimybę rodyti ir pasirinkti, todėl įsitikinkite, kad vartotojo sąsajos parametrai nustatyti tinkamai.

Lokalių sąrašo gavimas

Galite gauti lokalių LocalizationSettings.AvailableLocales.Locales , sukurtų . Jei naudosite tai ir scenos pradžioje nustatysite išskleidžiamąjį meniu, viskas bus gerai. Tačiau inicijavimas gali būti nebaigtas, kai Localization pradedate žaidimą, todėl gali tekti palaukti, kol jis bus baigtas.

Pirmiausia sukurkite scenarijų. DropDownEvent Palikite pavadinimą kaip .

Scenarijus atrodo taip:

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 Metodas atlieka apdorojimą scenos pradžioje, tačiau šiuo metu Localization , inicijavimas gali būti nebaigtas. await LocalizationSettings.InitializationOperation.Task Palaukite, kol bus baigta iniciacija. await , todėl Start pridėkite jį prie async metodo.

LocalizationSettings.AvailableLocales.Locales Toliau pateikiamas jūsų sukurtų lokalių sąrašas, todėl foreach apdorokite tiek lokalių, kiek norite. Dropdown.OptionData Nustatykite Dropdown lokalės pavadinimą į ir įtraukite jį į .

Norėdami išplečiamajame sąraše pasirinkti Dropdown.value dabartinę lokalę, ypatybėje ieškokite tikslinės lokalės ir nustatykite indeksą.

Tai yra sąrašo kūrimo pabaiga, bet taip pat noriu įtraukti procesą, kuris pakeičia lokalę, kai pasirenkamas išplečiamasis elementas. onValueChanged Prideda lokalės perjungimą į įvykį. Tai tas pats, kas ankstesnis patarimas.

Pridėkite sukurtą scenarijų prie išskleidžiamojo meniu.

Paleiskite ir patikrinkite

Pabandykite paleisti žaidimą, kad jį patikrintumėte. Yra laikas, kai lokalių sąrašas nenustatomas iškart po žaidimo pradžios, Localization nes nėra inicijuotas.

Po šiek tiek laiko turėtumėte matyti išskleidžiamajame meniu užregistruotų lokalių sąrašą. Jei bandysite perjungti elementus, turėtumėte matyti, kad keičiasi teksto turinys.