Få en liste over landestandarder, du har oprettet

Side opdateret :
Dato for oprettelse af side :

Miljø til bekræftelse

Windows
  • Windows 11
Enhedslistens redaktør
  • 2021.3.12f1
Inputsystem (Unity-teknologier)
  • 1.4.4
Lokalisering (Unity Technologies)
  • 1.3.2

Forudsætninger for dette tip

Følgende indstillinger er foretaget på forhånd som en forudsætning for beskrivelsen af dette tip.

Mål for vores tips

Viser en liste over tilsvarende landestandarder i rullelisten og skifter visningsteksten, så den svarer til den landestandard, som brugeren har valgt.

Forudsætning viden og forberedelse

Dette tip forudsætter lokalisering af følgende tekst: Se først følgende tip for at forberede visning af lokaliseret tekst.

Placering af ændring af landestandard

Indeholder en rullemenu, hvor du kan få vist en liste over landestandarder. Du behøver kun at kunne vise og vælge, så sørg for, at brugergrænsefladeparametrene er indstillet korrekt.

Få en liste over landestandarder

Du kan få oprettet en liste over landestandarder LocalizationSettings.AvailableLocales.Locales i . Hvis du bruger dette og indstiller det til rullemenuen i starten af scenen, er du OK. Initialiseringen er dog muligvis ikke fuldført, når Localization du starter spillet, så du skal muligvis vente på, at det er fuldført.

Opret først et script. DropDownEvent Lad navnet være .

Scriptet ser sådan ud:

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 Metoden udfører behandling i starten af scenen, men på dette tidspunkt Localization , initialiseringen af er muligvis ikke afsluttet. await LocalizationSettings.InitializationOperation.Task Vent på, at initialiseringen er fuldført. await , så Start tilføj det til async metoden.

LocalizationSettings.AvailableLocales.Locales Derefter indeholder den en liste over landestandarder, du har oprettet, så behandl så foreach mange landestandarder, som du vil. Dropdown.OptionData Angiv Dropdown landestandardnavnet til , og føj det til .

Hvis du vil vælge Dropdown.value den aktuelle landestandard på rullelisten, skal du søge efter mållandestandarden i ejendommen og angive indekset.

Dette er slutningen på oprettelsen af listen, men jeg vil også medtage en proces, der ændrer landestandarden, når rullelisten er valgt. onValueChanged Føjer landestandardskift til hændelsen. Dette er det samme som det foregående tip.

Vedhæft det script, du oprettede, til rullemenuen.

Kør og bekræft

Prøv at køre spillet for at tjekke det ud. Der er et tidspunkt, hvor landestandardlisten ikke er indstillet umiddelbart efter spillet starter, Localization fordi den ikke initialiseres.

Efter lidt tid bør du kunne se listen over landestandarder, der er registreret i rullemenuen. Hvis du prøver at skifte element, bør du kunne se, at tekstens indhold ændres.