获取已创建的区域设置列表

更新页 :
页面创建日期 :

验证环境

窗户
  • 视窗 11
统一编辑器
  • 2021.3.12f1
输入系统(统一技术)
  • 1.4.4
本地化(统一技术)
  • 1.3.2

此提示的先决条件

作为此提示描述的前提,已预先进行了以下设置。

我们提示的目标

在下拉 UI 中显示相应区域设置的列表,并切换显示文本以匹配用户选择的区域设置。

先决条件知识和准备

此提示假定以下文本的本地化: 首先,请参考以下提示来准备显示本地化文本。

区域设置更改下拉位置

提供用于显示区域设置列表的下拉列表。 您只需要能够显示和选择,因此请确保正确设置了 UI 参数。

获取区域设置列表

您可以获取在 中创建的区域 LocalizationSettings.AvailableLocales.Locales 设置列表。 如果您使用它并将其设置为场景开始时的下拉列表,则可以。 但是,启动游戏时 Localization 初始化可能尚未完成,因此您可能需要等待它完成。

首先,创建一个脚本。 DropDownEvent 将名称保留为 。

脚本如下所示:

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 该方法在场景开始时执行处理,但此时 Localization ,初始化可能尚未完成。 await LocalizationSettings.InitializationOperation.Task 等待初始化完成。 await ,因此 Start 请将其添加到方法中 async

LocalizationSettings.AvailableLocales.Locales接下来,包含您创建的区域设置列表,因此请foreach根据需要处理任意数量的区域设置。 Dropdown.OptionData将区域设置名称设置为 Dropdown 并将其添加到 。

若要在下拉列表中选择 Dropdown.value 当前区域设置,请在属性中搜索目标区域设置并设置索引。

创建列表到此结束,但我还想包含一个在选择下拉项时更改区域设置的过程。 onValueChanged 将区域设置切换添加到事件。 这与上一个提示相同

将创建的脚本附加到下拉列表中。

运行并验证

尝试运行游戏进行检查。 有时,区域设置列表不会在游戏开始后立即设置, Localization 因为未初始化。

片刻之后,您应该能够在下拉列表中看到已注册的区域设置列表。 如果您尝试切换项目,您应该能够看到文本的内容发生了变化。