Obter uma lista de localidades que você criou
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.