[Unity] Unity游戏翻译插件XUnity.AutoTranslator配套用字体(Unity 6000+)——解决新版Unity翻译后文字不显示\方框问题
【简介】
在使用XUnity.AutoTranslator为Unity游戏进行文本翻译时,遇到翻译后的文字无法显示,或者只显示为“口口口”之类的方框?
一般来说都是由于TextMeshPro字体配置不正确导致的。
这里将提供新版Unity,即Unity 6所需的TextMeshPro字体。旧版字体可在XUnity.AutoTranslator发布页下载到。
---------------------------------------------------------------------------------
【问题描述】
按照往常一样,配置好XUnity.AutoTranslator插件后,进游戏测试。发现翻译后的文字要么完全不显示,要么显示为一连串的方框(如“口口口”),连英文文本也消失不见了,如下图所示。
---------------------------------------------------------------------------------
【原因分析】
要理解这个问题,我们需要先了解两个关键概念:
Unity 2021/2022 (LTS): 这些是长期支持版本,非常稳定,被大量游戏使用。
Unity 6000+ (Unity 6): 这是Unity的最新主要版本,其内部版本号以6000开头。它带来了许多底层更新,包括对核心组件的升级。
定义: TextMeshPro (TMP) 是Unity官方推出的、最终级的文本渲染系统。它超越了传统的Unity UI Text和旧版TextMesh,提供了更清晰的字体、更丰富的样式效果(如轮廓、阴影、字距调整等)。
重要性: 绝大多数现代Unity游戏都使用TMP来显示所有UI和世界空间中的文字。XUnity.AutoTranslator的工作原理,正是通过Hook(挂钩)游戏的TMP组件,将其原本要显示的文本替换为翻译后的文本。
要理解问题所在,首先需要明白TextMeshPro(TMP)所使用的“字体”,与我们日常理解的 .ttf 或 .otf 文件(TrueType/OpenType字体)是两种完全不同的东西。
普通字体文件(.ttf/.otf):就像是一本 “字库蓝图”。它只包含了每个字符的轮廓描述(比如“国”字这个图形应该怎么画),但它本身无法被游戏引擎直接、高效地渲染在屏幕上。
TMP字体资源(.asset):这更像是一个 “为游戏引擎量身定制的字体工具包”。它是Unity引擎使用那本“字库蓝图”后,经过一系列复杂加工,专门生成的成品资源。这个工具包里包含的关键内容,是普通字体所没有的:
Signed Distance Field (SDF) 纹理图谱:这是最核心的区别。TMP会预先将字符渲染到一张特殊的纹理(图片)上,生成SDF数据。这种技术让文字无论放大还是缩小都能保持清晰锐利,是实现高质量游戏文字渲染的基石。
字符映射数据:它精确记录了每个字符在SDF纹理上的位置、大小、间距、对齐方式等所有渲染所需的信息。
专属材质与着色器:TMP字体资源绑定了特定的材质和着色器,用于在屏幕上最终渲染出带有轮廓、阴影、发光等特效的文字。
总结来说:普通字体是 “原材料”,而TMP字体是经过Unity引擎深度加工后的 “即用型成品”。这个“加工”过程与Unity引擎的版本强相关。一个由旧版Unity(如2019版)“加工”出来的TMP字体成品,很可能无法被新版Unity(如2022或6000版)的游戏运行时正确“读取”和使用,从而导致文字渲染失败,显示为方框。
因此,解决方框问题的根本方法,就是为插件提供一个由新版Unity“加工”的、兼容的TMP字体成品。
4、结论:现阶段XUnity.AutoTranslator官方提供的FontTextMeshPro字体资源最新只到Unity 2022。当你需要翻译一个由Unity 6编译的游戏时,旧版字体资源无法被正确识别和加载,导致翻译文本渲染失败。
---------------------------------------------------------------------------------
【解决方案】
找到原因问题就很简单了。现在我们需要一套由Unity 6编译过的FontTextMeshPro的字体。
第一个想法是自己弄。但过程实属艰辛,倒腾了很久,最后做出来发现有问题。吐血。
又折腾半天。最后发现可以使用解包工具,修改字体的m_Scale属性,调节字体的缩放。
---------------------------------------------------------------------------------
【附件说明】
我在附件里分享了这套字体并提前设置好了几种缩放系数。不同的数字代表不同的缩放系数。例如,0.5表示字体大小为原字体的50%,以此类推。选择一款合适的字体下载即可。
---------------------------------------------------------------------------------
【配置设置】
字体在使用之前还需要进行简单的配置。
2、在游戏文件夹中找到配置文件...\BepInEx\config\AutoTranslatorConfig.ini。