获取已创建的区域设置列表
验证环境
- 窗户
-
- 视窗 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
因为未初始化。
片刻之后,您应该能够在下拉列表中看到已注册的区域设置列表。 如果您尝试切换项目,您应该能够看到文本的内容发生了变化。