Obter uma lista de localidades que você criou

Página atualizada :
Data de criação de página :

Ambiente de verificação

Windows
  • Janelas 11
Unity Editor
  • 12.3.2021F1
Sistema de Entrada (Unity Technologies)
  • 1.4.4
Localização (Unity Technologies)
  • 1.3.2

Pré-requisitos para esta dica

As configurações a seguir foram feitas com antecedência como premissa para a descrição desta dica.

Objetivos das nossas dicas

Exibe uma lista de localidades correspondentes na interface do usuário suspensa e alterna o texto de exibição para corresponder à localidade selecionada pelo usuário.

Pré-requisito de conhecimento e preparação

Esta dica pressupõe a localização do seguinte texto: Primeiro, consulte as dicas a seguir para se preparar para exibir texto localizado.

Posicionamento suspenso de alteração de localidade

Fornece uma lista suspensa para exibir uma lista de localidades. Você só precisa ser capaz de exibir e selecionar, portanto, certifique-se de que os parâmetros da interface do usuário estejam definidos adequadamente.

Obter uma lista de localidades

Você pode obter uma lista de localidades LocalizationSettings.AvailableLocales.Locales criadas no . Se você usar isso e defini-lo para a lista suspensa no início da cena, você está OK. No entanto, a inicialização pode não ter sido concluída quando Localization você inicia o jogo, portanto, talvez seja necessário aguardar a conclusão.

Primeiro, crie um script. DropDownEvent Deixe o nome como .

O script tem a seguinte aparência:

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 O método executa o processamento no início da cena, mas neste ponto Localization , a inicialização de pode não ter sido concluída. await LocalizationSettings.InitializationOperation.Task Aguarde a conclusão da inicialização. await , então Start adicione-o ao async método.

LocalizationSettings.AvailableLocales.Locales Em seguida, contém uma lista de localidades que você criou, para foreach processar quantas localidades desejar. Dropdown.OptionData Defina Dropdown o nome da localidade como e adicione-o a .

Para selecionar Dropdown.value a localidade atual na lista suspensa, procure a localidade de destino na propriedade e defina o índice.

Este é o fim da criação da lista, mas também quero incluir um processo que altera a localidade quando o item suspenso é selecionado. onValueChanged Adiciona alternância de localidade ao evento. Essa é a mesma dica anterior.

Anexe o script criado à lista suspensa.

Executar e verificar

Tente executar o jogo para verificá-lo. Há um momento em que a lista de localidades não é definida imediatamente após o início do jogo, Localization porque não é inicializada.

Depois de um pouco de tempo, você deve ser capaz de ver a lista de localidades registradas na lista suspensa. Se você tentar alternar itens, poderá ver que o conteúdo do texto é alterado.