Unity游戏如何自动翻译成中文?10分钟上手XUnity.AutoTranslator免费翻译插件
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
上周深夜,你终于下载好那款心心念念的日文RPG,满怀期待地点开游戏——结果满屏五十音图扑面而来:角色在说什么?道具有什么用?连"确定/取消"都得靠猜。这种"卡在第一步"的憋屈,玩过日韩游戏的玩家都懂。
今天要介绍的XUnity.AutoTranslator,就是专治这个问题的开源利器。它是一款能实时把 Unity 游戏里的文本自动翻译成中文的免费插件,装上之后,游戏里的对话、菜单、物品说明会一边显示一边翻译,不用切窗口、不用复制粘贴,体验接近官方汉化。
它到底怎么做到的?跟着下面的步骤走一遍,十分钟你就能看到熟悉的方块字出现在游戏里。
为什么它能"读"懂游戏里的文字
XUnity.AutoTranslator 的思路很简单:在游戏运行时"挂钩"(Hook)住所有文字组件,一发现有新文本出现,就交给翻译引擎处理,再把译文写回屏幕。整个过程完全自动,游戏原本的安装目录和资源文件一个都不用动。
它把这项工作拆成了三个可自由组合的部分:
- 插件框架适配层:支持 BepInEx、MelonLoader、IPA、UnityInjector,你游戏里装了哪个管理器,它就能挂到哪个上;
- 文本框架识别层:能识别 UGUI、NGUI、TextMeshPro、IMGUI、FairyGUI、UTAGE 等多种 UI 系统;
- 翻译端点层:内置 Google、Bing、DeepL、百度、Yandex、Papago 等十余种翻译服务,还可以挂载第三方或自研端点。
翻译结果还会自动存进本地缓存文件,下次再遇到同一句话直接读取,省时又省钱。是不是已经开始心动了?那我们就从安装开始。
第一步:装好BepInEx插件管理器
BepInEx 是当前最主流的 Unity 游戏插件管理器,XUnity.AutoTranslator 对它的支持也最完善,推荐新手从这条路入手。
- 下载适合你游戏版本的 BepInEx,解压到游戏根目录(和游戏主程序 exe 放在一起);
- 直接运行一次游戏,看到游戏目录下出现
BepInEx文件夹就说明安装成功; - 关闭游戏,准备下一步。
注意:不同游戏需要的 BepInEx 版本可能不同(5.x 与 6.x 不通用),如果游戏社区有推荐的安装方式,以社区为准。
第二步:解压AutoTranslator插件包
从项目发布页下载XUnity.AutoTranslator-BepInEx安装包,解压后把里面的文件全部复制到游戏根目录,让它自动合并进BepInEx文件夹。正确的话,你的插件目录下应该能看到:
BepInEx/plugins/XUnity.AutoTranslator/ BepInEx/plugins/XUnity.ResourceRedirector/提示:不要单独删除
XUnity.ResourceRedirector目录,其他插件可能依赖它。
第三步:改两行配置把界面变成中文
再次启动游戏,让插件跑一次初始化。退出游戏后,打开BepInEx/config/AutoTranslatorConfig.ini,找到[Service]和[General]两段:
[Service] Endpoint=GoogleTranslateV2 [General] Language=zh FromLanguage=jaLanguage=zh表示目标语言为中文;FromLanguage=ja表示源语言为日语(按你玩的游戏改,比如ko是韩语);Endpoint是翻译引擎,默认的 GoogleTranslateV2 无需注册即可用,追求翻译质量可以换成DeepLTranslate。
保存文件,再次启动游戏,界面上的日文应该开始陆续变成中文了——这就是可验证的第一步成果。
第四步:记住这几个救命快捷键
| 快捷键 | 作用 | 什么时候用 |
|---|---|---|
| ALT + 0 | 打开/关闭翻译设置面板 | 想切换引擎、看状态时 |
| ALT + T | 在原文和译文间切换 | 想确认某句话翻得对不对 |
| ALT + R | 重新加载翻译文件 | 手动改完翻译文件立刻生效 |
| ALT + U | 手动触发文本挂钩 | 某个文本一直没被翻到 |
| ALT + F | 切换字体覆盖 | 配了 OverrideFont 后对比效果 |
| ALT + Q | 重启已停摆的翻译功能 | 翻译服务连续报错被自动关闭后 |
注意:ALT + 0 里的"0"是数字零,不是字母 O,初次使用经常有人按错。
普通用户进阶:让翻译越用越"懂你"
自动翻译毕竟是机器翻译,偶尔会翻得生硬。好在 XUnity.AutoTranslator 支持手动精修,而且流程极其简单:
- 打开
BepInEx/Translation/zh/Text/_AutoGeneratedTranslations.txt,里面按原文=译文的格式记录了所有翻译; - 把不满意的行改掉,保存后按ALT + R立即生效,不用重启游戏;
- 想让某句话永远不再被自动翻译覆盖,就把它从自动文件里剪切到一个新建的
.txt文件——自动文件优先级最低,你手写的永远说了算。
如果游戏里有些文本是"模板"式的(比如道具名、数值),正则表达式能帮你批量搞定。普通翻译用r:前缀:
r:"^アイテム ([0-9]+)$"=物品 $1遇到"数字+文本"这种被游戏拼起来的复合文本,用分割器正则sr:,先把整句拆开分别翻译再拼回去:
sr:"^([0-9]{2}) ([\S\s]+)$"=$1 $2提示:正则别滥用、别写得过宽,否则会拖慢游戏性能;也千万别把正则写进以
_开头的自动生成文件里,那里不生效。
追求体验者进阶:解决乱码、错位和翻译质量
中文乱码怎么破?游戏自带字体往往没有中文字形,这是最常见的问题。对 UGUI 界面设置OverrideFont指定一个中文字体;对 TextMeshPro 则优先用FallbackFontTextMeshPro做后备字体——原文能用原字体显示的字不动,缺的字才用后备字体补上,效果最自然。
译文太长把UI撑爆了?确认EnableUIResizing=True,插件会自动调整组件的溢出方式,让长文本显示得下。个别顽固界面,还可以用resizer.txt文件按组件路径单独调整字号。
想少花钱、翻得更快?打开EnableBatching=True合并请求、UseStaticTranslations=True启用内置静态词典缓存、调低MaxCharactersPerTranslation限制单条翻译长度。另外别忘了:插件自带一整套防滥用机制——文本稳定 1 秒才发请求、同时只发一个请求、单局最多 8000 次——所以翻译偶尔"顿一下"是正常现象,不是坏了。
游戏要翻译图片?从 2.16 起支持纹理替换,在[Texture]段开启EnableTextureTranslation=True,配合EnableTextureDumping=True把游戏图片导出、改好中文再放回目录即可。注意转正式使用时务必关掉 Dumping,否则有性能损耗。
二次开发者进阶:把翻译能力装进你自己的MOD
XUnity.AutoTranslator 面向开发者开放了一整套 API,几行代码就能让自家 MOD 的文字也走翻译管线:
// 异步翻译:先查缓存,查不到再请求翻译端点 AutoTranslator.Default.TranslateAsync( untranslatedText, result => { if( result.Succeeded ) { var translatedText = result.TranslatedText; } } );想实现自己的翻译引擎?实现ITranslateEndpoint接口(返回Id、实现Translate方法),把编译好的 DLL 丢进Translators目录,用户就能在配置里选择它。不想让 AutoTranslator 碰你 MOD 的界面?把包含文本的 GameObject 名字里加上XUAIGNORE(忽略自身)或XUAIGNORETREE(忽略整棵子树)即可。
对于需要整体替换游戏资源的场景,项目还附带独立的XUnity.ResourceRedirector资源重定向库,可以在不改动游戏文件的前提下替换 TextAsset、贴图等资源,且它完全可以脱离 AutoTranslator 单独使用。
避坑清单:十个常见问题一次说清
| 现象 | 排查方向 |
|---|---|
| 界面上有文本没翻译 | 确认对应文本框架已启用;按 ALT+U 手动挂钩 |
| 完全没反应 | 检查Endpoint是否为空、网络是否可达 |
| 翻译一阵就停 | 服务端连续失败会触发保护性关闭,按 ALT+Q 重启 |
| 游戏按译文执行逻辑出错 | 开启TextGetterCompatibilityMode=True |
| 中文显示成方块 | 配置OverrideFont/FallbackFontTextMeshPro |
| UI 文字重叠、溢出 | 确认EnableUIResizing=True |
| IL2CPP 游戏部分漏翻 | IL2CPP 支持尚不完整,需 ALT+U 手动刷新,且 TextGetter 兼容模式、IMGUI 不可用 |
| 请求太多怕扣费 | 开EnableBatching,调小MaxCharactersPerTranslation |
| 想禁用自动翻译 | ALT+0 里选择空端点,或把Endpoint=清空 |
| 用了付费API | 密钥别外泄,确认所选引擎支持你的源/目标语言 |
社区生态:从一个人到一群人
XUnity.AutoTranslator 最迷人的地方在于它的开放性。社区已经为它写出了接入本地 Ollama 大模型的 LLM 翻译端点、Sugoi 离线翻译端点等第三方插件——这意味着你甚至可以不依赖在线服务,用本地模型完成翻译。项目本身的演进方向也集中在 AI 翻译集成、IL2CPP 支持完善和性能优化上。
如果你已经上手成功,不妨做三件小事:备份一份自己的配置文件、关注更新日志(新版经常会修复特定游戏的兼容问题)、把自己手工打磨的翻译词典分享出来。你写下的每一行原文=译文,都在帮助下一个和曾经的你一样卡在语言关口的玩家。
语言从来不该是游戏乐趣的障碍。现在就动手装好 XUnity.AutoTranslator,十分钟后,你会发现那个"看不懂"的世界,原来可以这么亲切。🎮
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考