XUnity.AutoTranslator 汉化教程:让 Unity 游戏外文界面变中文的完整步骤
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
XUnity.AutoTranslator 是一款跑在 Unity 游戏内部的实时汉化插件,它自动抓住界面上的外文、翻译后回填,还能配上手动文件做精修。这篇按真实使用顺序拆成几步,适合刚装完模组、想快速把游戏翻成中文的你。
先对号入座:该装哪个包
包选错了,后面全白忙。先看游戏目录里现在有什么,对号入座:
- 什么都没装过→ ReiPatcher 独立版。解压到游戏根目录、跟主程序 exe 同层,跑一次
SetupReiPatcherAndAutoTranslator.exe,之后用生成的"(Patch and Run)"快捷方式启动,以后直接点原 exe 就行。 - 已装 BepInEx→ BepInEx 版,DLL 落进
BepInEx目录即可。 - 用 MelonLoader→ MelonMod 版,DLL 分散进
Mods和UserLibs。 - 用 IPA→ IPA 版,DLL 进
Plugins。 - 用 UnityInjector→ UnityInjector 版,进
UnityInjector目录(注意它可能不在游戏根目录)。
三条要命的坑:
- 已经装了 BepInEx 之类的管理器,就别再跑 ReiPatcher,两套注入会互相打架。
- 游戏是 IL2CPP 运行时(近几年新出的 Unity 游戏大多是),记得选带
IL2CPP后缀的包,BepInEx 路线还得配对应版本的 BepInEx 6。 - 每个包的 DLL 落点不一样,放错目录 = 插件根本没被加载。
第一次启动,配置只动这三处
首次进游戏后插件会生成AutoTranslator/Config.ini,别被满屏选项吓到,先只动三个字段:
[General]下Language=zh-CN——你要的目标语言。[General]下FromLanguage=ja——游戏原文语言,英文游戏填en(部分端点支持auto,但一般不推荐)。[Service]下Endpoint=——挑一个翻译服务,下面单独讲。
一句提醒:这两个语言代码得是"服务两端都认识"的写法,写错不会报错,只会安静地不翻。
翻译服务:免费档和付费档怎么选
端点分两档,利弊直接摊开:
- 免费档(
GoogleTranslate、DeepLTranslate、BingTranslate、PapagoTranslate):不用注册,走的是网页接口,能看懂剧情,但随时可能挂,稳定性不做承诺。 - 付费档:要申请密钥,通常自带每月免费额度,长期更稳。比如
BingTranslateLegitimate(每月 200 万字符免费)、DeepLTranslateLegitimate(每月 50 万字符免费)、GoogleTranslateLegitimate(有试用额度)、BaiduTranslate、YandexTranslate等。 - 本机离线:装了 LEC 或 ezTrans 的话,直接接
LecPowerTranslator15/ezTransXP,本地跑不占流量。 - 自己的服务:开发者可用
CustomTranslate填 URL,插件会带from/to/text发 GET 请求(先试 HTTP,别上 SSL,Unity-Mono 对证书经常抽风)。
几条狠话:
- 密钥泄露要立刻去平台吊销,别留着。
- 付费前先确认这个端点支持你要的 from→to 语种,别付了钱才发现翻不了。
- 插件会把请求压到最低,但翻多少不兜底,账单自负。
想留条后路的话,[Service]里还能填FallbackEndpoint=,主端点某条翻译失败时自动切到备用的。
快捷键:什么时候按哪个
别背清单,记住"什么情况下按哪个"就行:
- 进游戏第一件事 → 按
ALT+0唤出设置界面,确认插件活着(注意是数字 0 不是字母 O)。 - 想直观判断翻译到底生没生效 → 按
ALT+T在原文和译文间来回切。 - 改了手动译文文件、不想重启 → 按
ALT+R热加载。 - 某处文字没被抓到 → 按
ALT+U手动触发一次抓取。 - 配了字体覆盖、想临时对比默认字体 → 按
ALT+F。 - 还想手动管多个翻译器 → 按
ALT+1打开聚合界面。 - 插件因连续请求失败自动停机了、网络修好要复活 → 按
ALT+Q(只有这种"因端点连续报错才停机"的情况才有用,乱按只会再被它停掉)。
最容易忘的是ALT+Q:插件连续请求失败会自动停机保护,修好网络按一下就能回来,不用重开游戏。
某块文字没翻到:默认关掉的框架要手动开
不是所有文字组件都被默认接管,[TextFrameworks]里是这样分档的:
- 默认开着的:
UGUI、NGUI、TextMeshPro、UIElements。 - 默认关着的:
IMGUI、TextMesh(游戏里的 3D 漂浮文字常走 TextMesh,模组的自制菜单常走 IMGUI)。
某块界面没反应,多半就是它走的框架被关着。回[TextFrameworks]把EnableIMGUI=True或EnableTextMesh=True打开再试。想翻模组的 UI,基本都得先开IMGUI。
想让翻译更准:手动文件怎么改
跑完一局,插件把结果写进Translation\{Lang}\Text\_AutoGeneratedTranslations.txt,格式就是"原文=译文"一行一条。直接改这个文件,按ALT+R立即生效。
想分层管理:
- 在
Translation目录里另建 txt、或塞 zip 包,优先级比那个自动生成文件更高(自动生成文件优先级最低)。 - 给某个模组单独做译文:建
Translation\{Lang}\Text\Plugins\{模组dll名}\目录放文件;首行加#enable fallback,模组原文缺失时会自动回退到通用译文。
装备名、模板文本:一条正则吃掉一整族
像"レザーブレス 1、2、3"这种套模板的名字,手写每条不现实,一条正则吃全部:
r:"^レザーブレス ([0-9]+)$"=皮手环 $1
r:开头是标准正则,直接套在原文上,$1取第一个捕获组。
游戏把多段文字拼着显示、同一件装备有 N 种组合时,用sr:的拆分式正则先拆块、逐块翻译再拼回;拆出来的分组能按名字取(${组名}),名字以_i结尾的组会原样带出不翻译。
一个坑:正则不能放进以_开头的自动生成文件里,得另建文件写。
译文显示成方块:中文字体怎么配
翻译成功了但界面是一排方块,说明游戏自带字体不含中文字形。
- 首选给
FallbackFontTextMeshPro指一个支持中文的字体(TMP 后备字体),只补缺的字形。 OverrideFont负责整套替换 UGUI 字体,OverrideFontTextMeshPro管 TMP(能用 Fallback 就别用它,影响面太大)。- 社区有打包好的
.unity3d字体资产,放进游戏目录、把文件名填进配置就能用。
译文太长把按钮撑爆了,开EnableUIResizing,插件会尽力调整组件的溢出行为把字放进来。
再往深挖:贴图里的死字和资源重定向
有些文字直接画在贴图里(地图、立绘),文字钩子够不着。两个默认关闭的模块能接住:
[Texture]节:把游戏贴图导出到TextureDirectory,你用图像工具改掉死字再放回原处(文件名保留末尾的哈希)。注意导出、替换都吃性能,别开着挂机。[ResourceRedirector]节:拦截资源加载,把TextAsset等资源重定向到你自己的文件,适合整份覆盖游戏文本。
这俩默认都是关的,需要时才开。
⚠️ 一次跑不通:避坑清单
按顺序扫一遍,基本都能定位:
- 语言代码两端都得认识,写错只表现为"不翻",不会报错。
- 按
ALT+0唤不出界面 → DLL 放错目录了,回去核对包的落点。 - 某个框架的文字没翻 → 去
[TextFrameworks]开对应开关。 - 超长文本被整段跳过 → 调大
MaxCharactersPerTranslation(默认 200,上限 2500)。 - 翻完游戏逻辑不对、甚至卡住 → 开
TextGetterCompatibilityMode=True(游戏拿"显示的文字"去跑逻辑时才需要)。 - 还不行 →
[Debug]下EnableLog=True复现一次,看日志里的真实报错。
插件内置了限流和去重,正常跑放心开着挂机。
卡住时先开EnableLog复现、翻翻官方 README 的 FAQ,八成能对上号;社区里也有人攒第三方端点列表和字体包,逛一圈常有现成方案。外语游戏搁置那么久,其实就差这一步——按上面的顺序来,先让ALT+0的界面弹出来再说。
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考