使用教程
本地化功能
ThunderFire UX Tool的本地化功能支持图片本地化和文字本地化两大类。
- 图片本地化:即 UXImage 的本地化。
- 文字本地化:包括 UXText 和 UXTextMeshPro 的本地化,操作类似,本手册截图以 UXText 为例。
文字本地化包括两种文本类型:静态文本类型与动态文本类型,本手册会在子标题中标注出文本类型。
本地化概览
配置本地化语言与路径
点击菜单【ThunderFireUXTool->本地化 (Localization)->设置 (Setting)】,弹出窗口如下图:
在“语言”一栏可以勾选游戏支持的所有语言类型,共有 14 种语言。
在“路径”一栏可以设置本地化文件夹、静态文本表格路径和动态文本表格路径,本地化文件夹要求位于运行时能够进行资源加载的路径下(例如Resources文件夹下),三个路径均要求在“Assets/”目录下。
本地化文件夹存放了所有本地化图片资源以及文本表格转为 JSON 后的 JSON 文件,名称为 TextLocalization.json
- 静态文本表格路径是用于静态文字本地化的表格路径,后缀名为“.xlsx”
- 动态文本表格路径是用于动态文字本地化的表格路径,后缀名为“.xlsx”
若没有静态文本表格,点击【生成空的静态文本表格】按钮,在弹出的窗口中选择一个路径,点击【保存】,即可生成一个空的静态文本表格。其包含key、路径、原文以及各种语言类型的翻译。
若没有动态文本表格,点击【生成空的动态文本表格】按钮,在弹出的窗口中选择一个路径,点击【保存】,即可生成一个空的动态文本表格。其包含key以及各种语言类型的翻译。
设置完以上内容后点击【确定】设置生效。
运行时预览语言切换
运行时在【Game右上角】可以设置预览语言(不会修改游戏内设置),预览语言会将所有开启本地化的 UXImage、UXText 和 UXTextMeshPro 切换为对应语言。
点击“游戏内语言”表示不使用预览语言,使用游戏内部的设置,游戏内语言默认为“未设置”,此时点击“游戏内语言”程序不做处理,用户需要使用代码来设置游戏内语言(见程序接口)。
图片本地化
开启本地化
选中需要本地化的 UXImage,在 Inspector 中开启本地化。
勾选后:
特别地,若 Source Image 为空,则不显示“导入所有语种图片”按钮,本地化图素列表为空:
导入所有语种图片
点击“导入所有语种图片”按钮,选择当前 Source Image 的本地化图片所在文件夹,即可导入本地化图片,并在 Inspector 的本地化图素列表中显示,其中:
- 本地化图片所在文件夹不必是“Assets/”目录下的文件夹。
- 程序会递归寻找文件夹下所有文件。
- 图片命名为“图片原名_语言后缀”,扩展名为“.png”。
- 导入的路径为“本地化文件夹/语言后缀/图片全名”,若该路径已有相同名称图片,则覆盖。
- 若在 UX 工具“功能开关”设置中勾选了“自动将Texture转为Sprite",则会自动将导入的图片转为 Sprite 类型。
选择的文件夹:
导入后:
上例中程序会依次识别名为“about_CN.png”、“about_TC.png”、“about_EN.png”的文件,并将其导入到“本地化文件夹/CN/about_CN.png”、“本地化文件夹/TC/about_TC.png”、“本地化文件夹/EN/about_EN.png”路径下。
若有某种语言的图片缺失,则会用一张占位图片替代:
批量导入图片
点击菜单【ThunderFireUXTool->本地化 (Localization)->导入图片包 (Import Localization Images)】并选择本地化图片文件夹后,可以批量导入图片,其中:
- 本地化图片所在文件夹不必是“Assets/”目录下的文件夹。
- 程序会递归寻找文件夹下所有文件。
- 图片命名为“图片原名_语言后缀”,扩展名为“.png”。
- 导入的路径为“本地化文件夹/语言后缀/图片全名”,若该路径已有相同名称图片,则覆盖。
- 若在 UX 工具“功能开关”设置中勾选了“自动将Texture转为Sprite",则会自动将导入的图片转为 Sprite 类型。
例如导入以下文件夹:
程序会将“about_CN.png”导入到“本地化文件夹/CN/about_CN.png”路径下,将“clock_EN.png”导入到“本地化文件夹/EN/clock_EN.png”路径下。
原图更改后自动识别
当 Inspector 中 Source Image 更改后,本地化图素列表也会自动更新。
预览不同语言图片
在 Inspector 的本地化图素列表中,勾选某一种语言,可以在 Scene 中预览该语言的图片,此处预览不会修改原文件。
勾选后:
场景中:
注意:该功能会自动在 Hierarchy 中设置当前物体为不可见,若出现图片重叠的情况,请检查 Scene 中 是否为打开状态。
文字本地化
开启本地化
选中需要本地化的 UXText 或 UXTextMeshPro,在 Inspector 中开启本地化。
勾选后:
静态文本
静态文本是直接在场景或Prefab中创建并编辑好的文本,运行时可直接预览。将文本类型改为“静态文本”,然后进行文本内容配置:
填写翻译数据
点击“打开静态文本表格”,会将当前 Prefab 中开启本地化的 UXText 和 UXTextMeshPro 信息记录到表格中,并打开表格,若不存在将弹出创建新表格窗口。
打开后:
填写翻译数据(支持在一个单元格内填写多行数据):
保存并关闭表格,点击菜单【ThunderFireUXTool->本地化 (Localization)->将文本表格转为JSON文件 (Convert Text Table to JSON)】,即可在 Inspector 中的本地化文本列表查看效果。
若某种语言未填写翻译数据,将显示“未填充文本”。
key 值生成
静态文本类型的 key 值为自动生成,当 UXText 或 UXTextMeshPro 第一次勾选“开启本地化”时,会为其生成一个唯一的 key 值,当原文改变时,也会为其生成唯一的 key 值。
key 值复制
点击“复制”按钮,可将 key 值复制到剪贴板中,用于在表格中快速定位。
路径信息
静态文本表格的第二列用于记录对应物体的路径信息,以文件名+层级名构成。当同一物体在不同 Prefab 中具有多个实例时,路径信息会将这些路径均记录下来,以“ && ”分隔。
表格同步
点击菜单【ThunderFireUXTool->本地化 (Localization)->刷新静态文本表格 (Refresh Runtime-Use Text Table)"】可以手动同步静态文本表格,手动同步会使用所有 Prefab 中开启本地化且文本类型为静态文本的 UXText 和 UXTextMeshPro 信息进行同步。
同时,在保存 Prefab 时,也会使用当前 Prefab 中开启本地化且文本类型为静态文本的 UXText 和 UXTextMeshPro 信息进行自动同步。
用户数据防删
当同步表格时,用户已经填写的翻译数据会自动保留,即使该数据对应的物体已经不存在(此时路径和原文为空)。
异常信息
有两种情况程序会输出异常信息:
- 当程序尝试写入表格,但表格已打开时,会报错。
- 当两个物体 key 值相同,但原文不同时,会报警告(通常情况不会遇到)。
动态文本
动态文本是在运行过程中实时生成或由程序在代码中编辑的文本,ThunderFire UX Tool提供了这类文本的本地化预览功能。将文本类型改为“动态文本”,然后进行文本内容配置:
填写 key 值
点击“打开动态文本表格”,会根据本地化设置中的“动态文本表格路径”打开表格,若不存在将弹出创建新表格窗口。
打开后:
找到所需 key 值,将其填到 Inspector 中。
若本地化文本列表为空,则需要点击菜单【ThunderFireUXTool->本地化 (Localization)->将文本表格转为JSON文件 (Convert Text Table to JSON)】。
key 值复制
点击“复制”按钮,可将 key 值复制到剪贴板中,用于在表格中快速定位。
key 值更改自动识别
当 Inspector 中 key 值更改时,本地化文本列表会自动更新。
将文字表格转为JSON
点击菜单【ThunderFireUXTool->本地化 (Localization)->将文本表格转为JSON文件 (Convert Text Table to JSON)】,可将静态文本表格和动态文本表格转为一个 JSON 文件,文件路径为“本地化文件夹/TextLocalization.json”。
预览不同语言文本
在 Inspector 的本地化文本列表中,勾选某一种语言,可以在 Scene 中预览该语言的文本,此处预览不会修改原文件。
勾选后:
场景中:
注意:该功能会自动在 Hierarchy 中设置当前物体为不可见,若出现图片重叠的情况,请检查 Scene 中
是否为打开状态。
无文字模式
运行时在 Game 右上角可以设置无文字模式,会将所有 UXText 和 UXTextMeshPro 切换为方框占位符。
切换后:
显示 key
运行时在 Game 右上角可以设置显示 key 模式,会将所有开启本地化的 UXText 和 UXTextMeshPro 替换为其对应的 key 值。
切换后:
程序接口
函数
// 描述:可以切换游戏内语言
// 所属类:LocalizationHelper
// 参数:
// type 切换后的语言类型
// 返回值:无
public static void SetLanguage(LocalizationHelper.LanguageType type)