Hämta en lista över språk som du har skapat

Sidan uppdaterad :
Datum för skapande av sida :

Verifiering miljö

Windows
  • Fönster 11
Unity-redaktör
  • 2021.3.12F1
Inmatningssystem (Unity-teknik)
  • 1.4.4
Lokalisering (Unity-tekniker)
  • 1.3.2

Förutsättningar för det här tipset

Följande inställningar har gjorts i förväg som en förutsättning för beskrivningen av detta tips.

Mål med våra tips

Visar en lista över motsvarande språkinställningar i det nedrullningsbara användargränssnittet och växlar visningstexten så att den matchar den språkinställning som användaren har valt.

Förkunskapskrav och förberedelse

Det här tipset förutsätter lokalisering av följande text: Läs först följande tips för att förbereda visning av lokaliserad text.

Listrutan Ändra språk

Innehåller en listruta för att visa en lista över språkinställningar. Du behöver bara kunna visa och välja, så se till att gränssnittsparametrarna är korrekt inställda.

Hämta en lista över språkinställningar

Du kan hämta en lista över språk LocalizationSettings.AvailableLocales.Locales som skapats i . Om du använder detta och ställer in det på rullgardinsmenyn i början av scenen är du OK. Initieringen kanske inte har slutförts när Localization du startar spelet, så du kan behöva vänta tills den har slutförts.

Skapa först ett skript. DropDownEvent Lämna namnet som .

Skriptet ser ut så här:

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 utför bearbetning i början av scenen, men vid denna tidpunkt Localization kanske initieringen av inte har slutförts. await LocalizationSettings.InitializationOperation.Task Vänta tills initieringen är klar. await , så Start lägg till den i metoden async .

LocalizationSettings.AvailableLocales.Locales Innehåller sedan en lista över språkinställningar som du har skapat, så bearbeta så foreach många språkinställningar du vill. Dropdown.OptionData Ange Dropdown språknamnet till och lägg till det i .

Om du vill välja Dropdown.value den aktuella språkinställningen i listrutan söker du efter målspråket i egendomen och anger indexet.

Det här är slutet på att skapa listan, men jag vill också inkludera en process som ändrar språkinställningen när listrutan är markerad. onValueChanged Lägger till språkväxling i händelsen. Detta är detsamma som föregående tips.

Bifoga skriptet som du skapade i listrutan.

Kör och verifiera

Prova att köra spelet för att kolla in det. Det finns en tid då språklistan inte ställs in omedelbart efter att spelet startar, Localization eftersom den inte initieras.

Efter en liten tid bör du kunna se listan över språk som är registrerade i rullgardinsmenyn. Om du försöker byta objekt bör du kunna se att innehållet i texten ändras.