开发平台:Unity 6.0
编程平台:Visual Studio 2022
编程语言:CSharp 6.0
工具包类:Localization
一、前言
本地化多语言类型是软件面向国际化所必须的功能项。Unity 在 2022 版本后推出 Localization 工具包,以降低多语言门槛。本文重点围绕多语言实现作记录与补充。
二、环境准备
- 在 Package Manager 中下载安装 Location 工具包 | 关联标签
Unity Registry
- 在 Project Setting / Localication 分区中,为项目添加语种信息文件 | 按钮
Add Locale
- 【补充】默认选择语种 Chinese (Simplifeld) - 简体中文 + English - 英文。其余视情况而定。
- 【补充】关于
Add Custom Locale
:这是罕见语种的创建引用。基本上很难用到,例如外星文明的文字。 - 【操作】在确认语种范围后,点击 “Add Localers” 存储文件地址,一般的
Assets/StreamingAssets
或Asset
目录下即可。
- 在 Project Setting / Localization 分区中,为 Specific Locale Selector 与 Project Local Identifier 绑定默认语言。
三、创建词条
- 前往 “Window / Asset Manager / Localization Tables” 选项打开语种编辑窗口。如下图:
- 创建
New Table
并为其命名与添加词条。如上所示,添加了Author
-作者
-Author
的词条。- 需注意。为更好的引用与释义,建议使用 英译 作为
Key
便捷理解。
- 需注意。为更好的引用与释义,建议使用 英译 作为
四、添加组件
- 为文本组件(
UnityEngine.UI
TextMeshProUGUI
)添加Localization String Event
组件。 - 为依赖信息绑定 语种 Key 信息与语种文件。并建立 Text 文本更新事件订阅机制。
运行后,通过 Game 编辑视窗切换检查语种变化。
五、关于程序化绑定、订阅示例代码
5.1 订阅文本变化事件
LocalizeStringEvent StringEvent;
void Start() {
StringEvent.OnUpdateString.AddListener(OnStringUpdated);
}
5.2 本地化加载
public IEnumerator Start() {
yield return LocalizationSettings.InitializationOperation;
LocalizationSettings.SelectedLocal = LocalizationSettings.AvailableLocales.GetLocale(Application.systemLanguage);
}
该加载方式默认以 “本地系统语言” 为首选项。
LocalizationSettings.SelectedLocale =
LocalizationSettings.AvailableLocales.Locales[0];
该加载方式以语言队列组位序最为选择项。
LocalizationSettings.SelectedLocale =
LocalizationSettings.AvailableLocales.GetLocale(new UnityEngine.Localization.LocaleIdentifier("en"));
该加载方式以 语言缩写标准 作为选择项
5.3 关于 Sprite | Icon 图标
操作方式与 String 流程一致。不同于在编辑面板下,选择 Type = Asset Table Collection 作为 新 Table 存在。并使用 Localization Sprite Event
组件驱动与绑定。