Unity插件之Localization
前言
考虑到 Unity Crazy Web 2024 GameJam
是外国的比赛,所以我们将多语言添加到了项目的开发计划中。在进行多语言的配置时,就少不了一些好用的插件的支持,就比如 Unity Localization
这款本地化插件。在进行了了解、学习与使用后,它的方便快捷、功能强大为我留下了深刻的印象,所以我第一时间就将这款插件的推荐写了出来,有本地化需求的小伙伴一定能有所收获!
Unity Localization 插件介绍
Unity Localization
是 Unity 官方推出的本地化解决方案,它提供了一个系统化的方法来管理游戏或应用的多语言内容。这个插件从 Unity 2019.3 开始作为预览包提供,并在 Unity 2021.2 中成为正式功能。
主要功能
文本本地化:
- 支持多种语言的文本翻译
- 提供智能字符串查找和替换功能
- 支持文本参数化(如动态插入变量)
资源本地化:
- 支持本地化纹理、音频、预制体等资产
- 不同语言可以使用不同的资源版本
字体管理:
- 自动为不同语言切换合适的字体
- 支持回退字体设置
Pluralization(复数形式处理):
- 支持不同语言的复数规则
- 根据数量自动选择正确的文本形式
核心组件
Localization Tables(本地化表):
- 以电子表格形式组织翻译内容
- 支持 CSV 格式导入导出
- 包含键值对结构(Key-Value)
Localized String:
- 特殊数据类型,表示可本地化的字符串
- 可以绑定到 UI 文本元素
Locale(区域设置):
- 表示特定语言和区域设置
- 包含语言代码、书写方向等信息
Localization Settings:
- 全局本地化设置
- 管理可用语言和默认语言
工作流程
安装与设置:
- 通过 Package Manager 安装 Localization 包
- 创建 Localization Settings 资源
添加语言:
- 创建或导入 Locale 资产
- 设置默认语言和备用语言
创建翻译表:
- 新建字符串表或资产表
- 添加翻译键和对应语言的文本
实现本地化:
- 在场景中使用 LocalizedString 或 LocalizedAsset
- 或通过代码访问本地化内容
运行时语言切换:
- 通过代码更改 Selected Locale
- 所有本地化内容会自动更新
代码示例
1 | // 获取本地化字符串 |
优势特点
- 官方支持:Unity 官方维护,与引擎深度集成
- 非破坏性工作流:不会修改原始资源
- 动态更新:语言切换时无需重新加载场景
- 扩展性强:支持自定义本地化提供程序
- 编辑器友好:提供专用编辑器窗口和工具
适用场景
- 多语言游戏或应用开发
- 需要频繁更新翻译内容的项目
- 大型项目需要团队协作管理本地化
- 需要动态切换语言而不重启的应用
注意事项
- 需要 Unity 2019.3 或更高版本
- 对于非常简单的项目可能显得过于复杂
- 学习曲线相对陡峭,特别是对于复杂用例
- 需要合理规划键命名和表格结构以保持可维护性
使用方法
配置
在 Package Manager
安装插件之后,打开菜单栏 Edit -> Project Settings -> Localization -> Create
,找到Localization,点击Create创建,并选择一个文件目录进行文件保存。
点击 Locale Generator
搜索 zh
和 en
添加中英文配置,第一次添加时会让我们选择一个文件夹目录保存。
Locale Generator
哟用于添加或移除语言,每添加一种语言也会生成对应的配置文件,然后可以修改默认语言为中文,如图:
添加多语言映射
打开菜单栏 Window -> Asset Management -> Localization Tables
,点击 New Table Collectiont
创建表格。
该表格用于建立不同资源之间的对应关系,一个ky对应多个语言的资源,可以选择创建文本表或者资源表。
这里我们选择文本表(String Table Collection)使用,写好表名后点击Create就可以创建了,然后选择一个路径目录进行保存。
此时在 Localization Table
中添加多语言文本即可,配置内容主要是 Key
和对应多种语言的文本。
可通过 Window -> Asset Manager -> Localization Tables
打开该窗口。
实际项目中不一定将多语言内容全写在一个配置表中,不同的文本内容也可以通过创建多个配置表进行填写,让不同的模块自己管理文本内容也是一个不错的选择。
此时在场景中添加一个文本组件 Text
,然后在该组件右侧菜单处点击 Localize
,会自动添加一个 Localization String Event
组件。也可以手动添加 Localization String Event
组件。
此时在该组件中的 String Reference
参数中选择之前配置的多语言文本配置表中的 Key
即可完成多语言的配置。
通过脚本控制语言的切换,测试代码如下:
1 | using UnityEngine; |
索引值为 Localization 的配置项中的多语言的顺序,如下方第一个语言为中文则索引为0.
将脚本挂载到场景中,并在场景中添加两个Button分别绑定切换中英文的方法即可。
这样就完成多语言的配置与使用啦,像动态文本、资源多语言、映射表Excel等就先不多介绍了,有需要可以看上面的参考教程链接。
尾声
Unity Localization
插件为开发者提供了强大的工具来处理游戏本地化的复杂性,特别适合中大型项目或需要支持多种语言和地区的产品。希望能够对有本地化需求的小伙伴带来帮助。那么这次插件的分享就到这里啦,欢迎在评论区讨论你的见解与推荐!
—end—