Unity游戏实时汉化实战:XUnity.AutoTranslator从安装到优化全指南

1. 项目概述:为什么你需要XUnity.AutoTranslator?

如果你是一个喜欢玩独立游戏或者某些特定类型Unity游戏的玩家,肯定遇到过这种情况:一款游戏玩法、美术都深得你心,但偏偏没有官方中文,满屏的英文、日文或者其他语言让你玩起来磕磕绊绊,查词典查得头大。找汉化补丁吧,要么版本对不上,要么汉化质量参差不齐,甚至可能夹带私货。这时候,一个能实时、自动翻译游戏内文本的工具,就成了刚需。

XUnity.AutoTranslator(下文简称XUA)就是为解决这个问题而生的神器。它不是一个简单的“翻译器”,而是一个功能极其强大的Unity游戏文本钩取与替换插件。简单来说,它能在游戏运行时,“监听”到游戏UI上显示的任何文本,然后调用你指定的翻译服务(比如谷歌翻译、百度翻译、DeepL等),将翻译结果实时替换上去,让你几乎“无缝”地玩上中文版游戏。更厉害的是,它支持手动修正翻译、自定义字体、甚至替换游戏内的图片(比如带文字的UI图),功能深度远超一个普通翻译插件。

我接触这个插件已经好几年了,从它早期版本用到现在,处理过各种稀奇古怪的Unity游戏,从视觉小说到RPG,从2D像素风到3D大作。可以说,只要游戏是基于Unity引擎开发的,XUA就有很大概率能搞定它的文本翻译。今天这篇指南,我就把我这些年积累的经验,浓缩成最核心的3个步骤,带你从零开始,让任何Unity游戏“秒变”中文版。无论你是纯新手,还是有一定Mod安装经验的玩家,跟着做,都能成功。

2. 核心思路与准备工作:理解XUA的工作原理

在动手之前,我们先花几分钟搞清楚XUA到底是怎么工作的。这能帮你理解后续每一步操作的意义,遇到问题时也知道该往哪个方向排查。

2.1 XUA的三大核心模块

XUA本质上是一个运行在游戏进程内的“中间人”。它通过BepInEx、IPA或ReiPatcher等Unity Mod框架注入到游戏中,然后主要干三件事:

  1. 文本钩取与拦截:这是核心。XUA会“钩住”(Hook)Unity引擎中用于显示文本的函数(比如TextMeshProUGUI TextNGUI Label等组件的文本设置方法)。当游戏调用这些函数显示文字时,XUA会先一步拿到原始的、未翻译的文本字符串。
  2. 翻译与替换:拿到原始文本后,XUA会先在本地翻译缓存文件(_AutoGeneratedTranslations.txt)里查找是否已经有手动添加或之前自动翻译好的对应译文。如果没有,它就会根据你的配置,调用在线的翻译API(如Google Translate)进行实时翻译,并将结果缓存下来。最后,它把翻译好的文本“塞回”给游戏引擎,替换掉原本要显示的内容。
  3. 资源重定向:这是高级功能。除了文本,XUA还能通过其附带的XUnity.ResourceRedirector库,拦截游戏加载图片、音频等资源文件的请求。这意味着你可以把游戏里带外文的UI图片、图标等资源文件替换成自己准备好的中文版本,实现真正完整的“汉化”。

2.2 你需要准备什么?

开始三步走之前,请确保你手头有这几样东西:

  1. 目标游戏:一个你想汉化的、基于Unity引擎的PC游戏。通常你可以在游戏根目录下看到UnityPlayer.dllGameAssembly.dll(IL2CPP编译)或Mono相关DLL文件。
  2. Mod加载器:绝大多数情况下,我们使用BepInEx。它是一个通用、稳定且社区支持最广的Unity游戏Mod框架。你需要下载与游戏架构(x86或x64)匹配的BepInEx版本。对于现代游戏,通常选择BepInEx 5.x或6.x的x64版本。
  3. XUnity.AutoTranslator插件包:去GitHub的bbepis/XUnity.AutoTranslator项目页面,下载最新的XUnity.AutoTranslator-BepInEx-{VERSION}.zip文件。注意:一定要下载带BepInEx字样的版本,这是为BepInEx框架预配置好的。
  4. 一个可用的翻译API(可选但强烈推荐):虽然XUA内置了免费的谷歌翻译端点,但由于网络限制,在国内直接使用可能不稳定或无法连接。我强烈建议你准备一个备用方案:
    • 百度翻译API:免费申请,有每月一定额度的免费字符数,对于个人游戏翻译完全够用。你需要申请App ID密钥
    • 彩云小译API:同样有免费额度,翻译质量不错。
    • 自建代理:如果你有技术能力,可以为谷歌翻译配置代理服务地址。

实操心得:对于新手,我首推百度翻译API。申请过程简单,国内访问速度快且稳定。虽然翻译某些游戏术语(尤其是奇幻、科幻类)可能不如DeepL精准,但结合XUA的本地缓存和手动修正功能,完全能获得优秀的体验。千万不要在公开分享的汉化补丁里配置你自己的付费API密钥!

3. 第一步:基础环境搭建与插件安装

这是最基础,也最关键的一步。如果这一步出错,后面所有工作都无法进行。

3.1 安装BepInEx Mod加载器

  1. 解压BepInEx:将下载的BepInEx压缩包(例如BepInEx_x64_5.4.23.0.zip)解压。
  2. 放置文件:将解压后得到的所有文件和文件夹(主要是winhttp.dlldoorstop_config.iniBepInEx文件夹等)直接复制到你的游戏根目录。游戏根目录就是包含游戏主程序(.exe文件)的那个文件夹。
  3. 首次运行:双击运行游戏主程序(.exe)。游戏可能会黑屏或卡顿一会儿,这是BepInEx在初始化。运行一次后,正常关闭游戏。
  4. 验证安装:回到游戏根目录,你应该能看到新生成了一个BepInEx文件夹,并且里面有了pluginsconfig等子文件夹。同时,根目录下会多出一个LogOutput.log文件(BepInEx的日志)。这说明BepInEx安装成功。

注意事项:有些游戏有反作弊或特殊的启动器,可能会干扰BepInEx。如果游戏无法启动或启动后没有生成BepInEx文件夹,你需要查阅该游戏特定的Mod安装教程,可能需要使用特殊的启动参数或兼容层。

3.2 安装XUnity.AutoTranslator插件

  1. 解压XUA:解压你下载的XUnity.AutoTranslator-BepInEx-{VERSION}.zip文件。
  2. 放置核心文件:将解压得到的plugins文件夹下的XUnity.AutoTranslator文件夹,整个复制到游戏目录的BepInEx\plugins\路径下。
    • 最终路径应该类似于:你的游戏目录\BepInEx\plugins\XUnity.AutoTranslator\
  3. 放置依赖库:检查XUA压缩包内是否有corepatchers等文件夹,按照压缩包内的结构,将它们复制到游戏目录的BepInEx文件夹下,与现有的pluginsconfig文件夹同级。通常BepInEx版本的XUA包已经包含了所有必要依赖,直接整体覆盖即可。
  4. 首次运行生成配置:再次启动游戏。等待游戏进入主菜单或可以看见文字的地方,然后正常关闭游戏。这一步是为了让XUA生成默认的配置文件。

3.3 验证插件是否生效

  1. 打开游戏目录下的BepInEx\plugins\XUnity.AutoTranslator文件夹。
  2. 你应该能看到一个名为Translation的文件夹,以及一个Config.ini文件。Translation文件夹里会根据你的游戏语言设置生成子文件夹(如zh-CN)。
  3. 打开BepInEx\LogOutput.log文件,搜索XUnity.AutoTranslator。如果能看到类似[Info :XUnity.AutoTranslator] Initializing XUnity.AutoTranslator...[Info :XUnity.AutoTranslator] Plugin initialization complete!的日志,说明插件加载成功。

如果到这里一切顺利,恭喜你,XUA已经成功“住”进了你的游戏里。但它现在还是个“哑巴”,因为我们还没告诉它怎么翻译、翻译成什么语言。

4. 第二步:核心配置与翻译引擎设置

现在我们来“激活”XUA,让它开始为我们工作。所有配置都在Config.ini文件中完成。用记事本或其他文本编辑器(推荐VSCode、Notepad++)打开它。

4.1 基础语言与翻译端点配置

找到[General]部分,这是最重要的配置区。

[General] Language=zh-CN SourceLanguage=ja ;SourceLanguage=en ;SourceLanguage=ko Endpoint=GoogleTranslate ;Endpoint=BaiduTranslate ;Endpoint=
  • Language: 这是目标语言,即你想把游戏翻译成什么语言。设置为zh-CN(简体中文)。如果你想翻译成繁体中文,则用zh-TW
  • SourceLanguage: 这是源语言,即游戏原本使用的语言。你需要根据游戏实际情况设置。常见的有:
    • ja- 日语
    • en- 英语
    • ko- 韩语
    • 如果游戏是英文,但你想用日文作为中转翻译成中文(有时对ACG术语更友好),可以设置SourceLanguage=ja,但需要确保你的翻译端点支持日转中。
    • ;注释掉不用的行。确保只有你需要的源语言那一行没有;
  • Endpoint:翻译服务提供商,这是核心。默认是GoogleTranslate(谷歌翻译)。如果你在国内无法使用,就需要更改。
    • 如果你想使用百度翻译,将其改为Endpoint=BaiduTranslate,并取消注释下面[Baidu]部分的配置。
    • 如果你想完全禁用自动翻译(仅使用手动翻译的缓存文件),将其设为空:Endpoint=

4.2 配置百度翻译API(国内用户首选)

如果你选择了BaiduTranslate,需要配置API信息。

  1. 申请API:前往百度翻译开放平台官网,注册开发者账号,创建一个“通用翻译API”应用。成功后,你会获得App ID密钥
  2. 填写配置:在Config.ini中找到[Baidu]部分:
[Baidu] BaiduAppId=你的百度翻译App ID BaiduAppSecret=你的百度翻译密钥

你的百度翻译App ID你的百度翻译密钥替换成你申请到的实际内容。务必保管好你的密钥,不要泄露或在公开补丁中分享。

4.3 其他关键配置项解析

  • [Behaviour]部分:
    • EnableTranslationAggregator=True:启用翻译聚合器窗口(按Alt+0呼出),可以同时显示多个翻译引擎的结果,方便对比选择。建议开启。
    • MaxCharactersPerTranslation=400:单次翻译的最大字符数。超过此长度的文本(如大段剧情)会被跳过。重要:如果你要打包分享汉化补丁,请务必确保此值不超过400,并尽可能填充本地翻译文件,以减少对在线API的调用。
    • OutputUntranslatableText=False:是否输出无法翻译的文本到日志。调试时可开,正常使用建议关闭,否则日志文件会暴涨。
  • [Texture]部分(图片翻译):
    • EnableTextureTranslation=False:默认关闭。如果你需要替换游戏内的图片(如带文字的按钮、菜单图),可以设置为True,并配合TextureDirectory路径放置替换后的图片。
    • EnableTextureDumping=False切勿在公开发布的补丁中开启此选项!它会将游戏内所有检测到的纹理图片导出,可能导致性能问题并产生巨大文件。

4.4 字体配置(解决中文显示方块问题)

很多游戏的默认字体不包含中文字符集,导致翻译出来的中文显示为“□□□”。XUA提供了字体覆盖功能。

  1. 获取中文字体文件:你需要一个包含中文的.ttf.otf字体文件,例如“思源黑体”、“方正准圆”等。注意版权,确保用于个人用途。
  2. 对于UGUI(旧版Unity UI): 在[Behaviour]部分设置:
    OverrideFont=字体文件路径
    例如,如果你将SourceHanSansCN-Normal.ttf字体文件放在游戏根目录,可以写OverrideFont=SourceHanSansCN-Normal.ttf。更可靠的方式是将字体制作成Unity AssetBundle,但这需要一定的Unity编辑器操作,对新手较复杂。
  3. 对于TextMeshPro(TMP,新版Unity UI): 这是更常见的情况。XUA支持为TMP添加后备字体。
    FallbackFontTextMeshPro=字体资源名
    例如,可以使用TMP自带的Fonts & Materials/LiberationSans SDF作为后备(如果它包含中文)。更佳做法是使用社区制作好的TMP字体AssetBundle。你可以在XUA的GitHub Release页面找到TMP_Font_AssetBundles.zip,解压后将其中的.assets文件放入游戏目录,并在此处配置文件名(不含扩展名)。

配置完成后,保存Config.ini文件。再次启动游戏,如果一切配置正确,你应该能看到游戏内的文本开始被自动翻译成中文了!首次运行会边玩边生成翻译缓存,后续再玩时,已翻译过的文本会直接从本地缓存读取,速度飞快。

5. 第三步:高级调校与手动优化

自动翻译只是第一步,机器翻译的生硬、错误在所难免。第三步就是让你从“能玩”升级到“玩得舒服”的关键。

5.1 使用翻译聚合器进行实时校对

在游戏中按Alt+0可以呼出翻译聚合器窗口。这个窗口会显示当前鼠标悬停或选中的文本,并同时调用你配置的多个翻译引擎(需要在[TranslationAggregator]中启用)进行翻译对比。

如何使用

  1. 遇到翻译生硬或错误的地方,将鼠标悬停在那个文本上(或按Alt+C复制文本到剪贴板)。
  2. 查看聚合器窗口中各个引擎的翻译结果。
  3. 选择一个你认为最准确的翻译,或者综合几个翻译自己组织一句更通顺的。
  4. Alt+R可以强制重新加载翻译文件,让你修改后立即生效。

5.2 编辑本地翻译文件,实现精准汉化

所有自动翻译和手动添加的翻译,最终都保存在Translation\zh-CN\Text\_AutoGeneratedTranslations.txt文件中。这个文件是纯文本格式,每一行就是一个翻译对:

原文=译文

手动优化流程

  1. 玩游戏,遇到翻译不对劲的地方。
  2. 切出游戏,打开_AutoGeneratedTranslations.txt文件。
  3. 使用文本编辑器的搜索功能(Ctrl+F),查找那段有问题的原文。
  4. 将等号右边的自动翻译结果,修改为你认为更准确、更符合语境、更“信达雅”的译文。
  5. 保存文件。
  6. 回到游戏,按Alt+R热键重载翻译。刚才修改的文本就会立即更新为你手动翻译的内容。

高级技巧——使用正则表达式: 对于有规律变化的文本,比如道具名“生命药水 I”、“生命药水 II”,可以用正则表达式批量处理:

r:"^生命药水 ([IVXLCDM]+)$"=Health Potion $1

这行配置会将所有罗马数字等级的生命药水都统一翻译。正则表达式功能强大但需谨慎使用,不当使用可能导致性能问题或翻译错乱。

5.3 处理特殊场景与疑难杂症

  • 翻译不生效或部分文本不翻译
    • 检查Config.ini中的SourceLanguage是否设置正确。
    • 检查游戏文本是否是图片形式(而非文字)。如果是图片,需要开启EnableTextureTranslation并制作替换图。
    • 某些游戏使用自定义的文本渲染方式,可能需要调整TextGetterCompatibilityMode=True试试。
    • Alt+T可以临时开关翻译,检查是否是翻译导致了显示问题。
  • 游戏崩溃或闪退
    • 首先检查BepInEx的日志文件LogOutput.log,看是否有红色错误信息。
    • 尝试在Config.ini中设置[Behaviour]下的EnableSilentMode=True,减少插件输出。
    • 如果是IL2CPP编译的游戏(有GameAssembly.dll),XUA的支持可能不完整,可以尝试使用AutoTranslator.IL2CPP.BruteForceFix这个辅助插件。
  • 翻译后文字显示不全或重叠
    • 开启UI自动重设大小功能:[Behaviour]下设置EnableUIResizing=True
    • 如果还不行,可以手动创建resizer.txt文件来调整特定UI元素的字体大小和布局。这需要借助Runtime Unity Editor等工具来获取UI元素的路径。
  • 为其他Mod提供翻译
    • 如果游戏有其他Mod,它们的UI可能也需要翻译。你可以在Translation\zh-CN\Text\目录下创建Plugins文件夹,再在里面为每个Mod的DLL创建同名文件夹,放入翻译文件即可。

6. 常见问题排查与实战技巧实录

这里记录了我踩过的一些坑和对应的解决方案,希望能帮你节省大量折腾的时间。

6.1 问题速查表

问题现象可能原因解决方案
游戏启动后无任何翻译效果,Translation文件夹为空1. BepInEx未正确安装。
2. XUA插件文件放置位置错误。
3. 游戏是IL2CPP版本且未使用BruteForceFix。
1. 检查BepInEx\LogOutput.log,确认XUA插件已加载。
2. 确保文件路径为BepInEx\plugins\XUnity.AutoTranslator
3. 对于IL2CPP游戏,尝试使用辅助插件。
翻译结果为英文或非目标语言Config.ini中的Language设置错误。检查并确保Language=zh-CN(或其他目标语言代码)。
翻译API频繁报错或翻译慢1. 网络连接问题。
2. 免费API额度用尽或频率限制。
3. 使用了不稳定的公共端点。
1. 检查网络,尝试切换翻译端点(如从GoogleTranslate换到BaiduTranslate)。
2. 申请自己的API密钥并配置。
3. 在[Http]部分尝试配置ServiceUrl使用可访问的代理(仅限有相关资源和技术能力的用户)。
中文显示为方块“□□□”游戏字体不支持中文。配置FallbackFontTextMeshProOverrideFont,使用包含中文字符的字体。
Alt+0无反应,翻译聚合器不显示翻译聚合器未启用或热键冲突。检查Config.ini[Behaviour]下的EnableTranslationAggregator是否为True。尝试更改游戏内热键或XUA的热键配置(需修改代码,较复杂)。
修改_AutoGeneratedTranslations.txt后按Alt+R不生效1. 文件编码不是UTF-8 without BOM。
2. 文件正在被其他程序占用。
3. 修改了错误的文件(检查语言目录是否正确)。
1. 用Notepad++等编辑器将文件转为“UTF-8 无BOM”编码格式保存。
2. 关闭可能占用文件的编辑器。
3. 确认路径是Translation\{Lang}\Text\_AutoGeneratedTranslations.txt
游戏特定场景或Mod的UI不翻译1. 该UI使用IMGUI绘制且默认被禁用。
2. 文本路径特殊,未被钩取。
1. 尝试在Config.ini中设置[Behaviour]下的EnableIMGUI=True(可能影响性能)。
2. 开启EnableTextPathLogging=True,在日志中查看文本路径,尝试手动添加翻译或调整钩取策略。

6.2 独家避坑技巧

  1. 翻译缓存是王道:第一次玩一个新游戏,耐心点,让它跑一遍自动翻译。之后将生成的_AutoGeneratedTranslations.txt文件备份。重装游戏或分享给朋友时,直接放入这个文件,就能获得一个“基础汉化版”,体验大幅提升。
  2. 分而治之管理翻译:不要把所有手动翻译都堆在_AutoGeneratedTranslations.txt里。可以按章节、系统或Mod创建新的.txt文件放在Translation\zh-CN\Text\目录下。XUA会读取所有.txt文件,并且_AutoGeneratedTranslations.txt优先级最低,方便你管理和覆盖。
  3. 活用“替换”功能:在Translation\zh-CN\Text\目录下可以创建_Substitutions.txt文件。这里定义的替换规则会在翻译之前生效。比如游戏里角色名“John”总被翻译成“约翰”,但你希望保留原文,就可以添加John=John。这样翻译引擎就不会处理它了。
  4. 性能与稳定性权衡:如果你感觉游戏变卡了,尤其是场景切换时,可以尝试关闭一些高级功能:EnableTextureScanOnSceneLoad=FalseEnableSpriteRendererHooking=FalseCacheTexturesInMemory=False(如果用了图片翻译)。这些功能会消耗更多资源。
  5. 制作可分享的汉化补丁:如果你想把自己的劳动成果打包分享,请务必:
    • 清理_AutoGeneratedTranslations.txt,删除所有未修改的、质量差的机器翻译行,只保留你精心校对过的内容。
    • Config.ini中的Endpoint设为空(Endpoint=),强制用户使用本地翻译文件,避免他们因API问题无法使用。
    • MaxCharactersPerTranslation设置为400或更低。
    • 绝对不要包含EnableTextureDumping=TrueEnableTextureToggling=TrueOutputUntranslatableText=True等会产生大量文件或日志的配置。
    • 提供一个清晰的Readme.txt,说明安装步骤和配置方法。

经过以上三步——安装、配置、优化——你基本上就能征服绝大多数Unity游戏的汉化了。XUnity.AutoTranslator的强大之处在于它的高度可定制性和自动化潜力。一开始你可能只是用它来解燃眉之急,但随着你深入使用,手动修正越来越多的文本,最终甚至能产出一份质量不亚于专业汉化组的补丁。这个过程本身,也是深入了解游戏结构和语言之美的有趣经历。