XUnity自动翻译器使用指南:让Unity游戏里的外语实时变成中文
2026/8/20 4:34:25 网站建设 项目流程

XUnity自动翻译器使用指南:让Unity游戏里的外语实时变成中文

【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator

XUnity自动翻译器(XUnity.AutoTranslator)是一款嵌入Unity游戏运行时、自动抓取并翻译游戏文本的开源插件,支持UGUI、TextMeshPro、IMGUI等主流文字组件,可对接Google、DeepL、百度等十余种翻译服务。这篇文章会带你用一个下午跑通整套流程,并讲清楚它为什么值得信任。

从"啃生肉"到被朋友安利

半年前我下了一款评分很高的日式独立游戏,像素美术很对味,音乐也上头。但开场五分钟我就懵了——满屏日文,选项看不懂,剧情全靠猜。我试过截屏翻译,玩半小时要切十几次窗口;试过OCR划词,长句翻得七零八落。三天后我把它从硬盘删了,心里憋屈:好游戏,就是语言这道坎过不去。

后来在群里看到朋友直播同一款游戏,画面里的对话居然全是中文,而且是一边玩一边变,没有一丝卡顿。我以为是官方汉化,结果他甩过来一句:就是个翻译插件,叫XUnity。

这就是我和它的第一次见面。往后半年我陆续用它啃完了七八款"生肉"游戏,也踩了不少坑。这篇就当作一份过来人笔记。

十分钟验收:从拿到文件到看到中文

先别急着研究原理,我们走一条最快的路。整个过程不到十分钟,跑通之后你再决定要不要深入。

第一步,拿到项目文件。

git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator

这句话把整个项目的源码克隆到本地。如果你只想要现成的插件包,去项目的发布页下载对应平台的压缩包即可,二选一,别都下。

第二步,装好BepInEx。

XUnity翻译器本身是"寄居"在游戏里的,需要一个宿主框架。新手无脑选BepInEx:先下载BepInEx并按它自己的说明装进游戏目录,这是游戏mod社区最常见的加载器,兼容性最稳。

第三步,把插件放对位置。

解压插件包后,把文件按这个结构放进游戏根目录:

游戏根目录/ ├── BepInEx/ │ ├── plugins/ │ │ └── XUnity.AutoTranslator/ │ │ ├── XUnity.AutoTranslator.Plugin.Core.dll │ │ ├── XUnity.AutoTranslator.Plugin.BepInEx.dll │ │ └── Translators/ │ │ └── GoogleTranslate.dll │ └── config/ └── Translation/

插件核心文件放在BepInEx/plugins/XUnity.AutoTranslator/下,Translators/子目录放翻译服务,Translation/目录第一次启动后会自动生成,用来存翻译缓存。文件放错位置是后面所有"没反应"类问题的头号来源。

第四步,改三行配置。

启动一次游戏,BepInEx/config/下会生成AutoTranslatorConfig.ini。打开它,改这三个值:

[Service] Endpoint=GoogleTranslate ; 用哪个翻译服务,默认谷歌,零配置 [General] FromLanguage=ja ; 游戏原文是日语 Language=zh-CN ; 翻译成简体中文

Endpoint决定谁来翻译,FromLanguageLanguage是源语言和目标语言。日文游戏默认就是ja,如果你的游戏是英文,把ja改成en就行。

第五步,进游戏验收。

启动游戏,按ALT+0(是数字零,不是字母O)呼出翻译器界面,随便触发几句对话,等一两秒,中文就该出现了。再按ALT+T能在原文和译文之间来回切换——这个快捷键以后会经常用,它是你判断"这行字到底翻没翻"的利器。

看到中文那一刻,验收就算通过。接下来我们聊聊它凭什么能做到这件事。

它到底在幕后做了什么

你可以把XUnity想象成三个角色在游戏里协同工作。

第一个角色是潜伏在文字控件里的探子。Unity游戏里的对话、菜单、道具名,本质上都是一个个"文字组件"。插件在启动时给这些组件装了"窃听器"(术语叫hook),任何文字被设置进组件,它都能第一时间拿到原始内容。这就是为什么它不需要截图、不需要OCR——它直接读内存里的文本,比任何外挂式翻译都干净。

第二个角色是随身笔记本。每一句翻译成功的文本,都会被写进Translation\zh-CN\Text\_AutoGeneratedTranslations.txt这个文件。下次再遇到同一句话,直接查本子,不再发网络请求。你甚至可以手动编辑这个文件,把机翻改成你满意的措辞,改完按ALT+R热重载,不用重启游戏。

第三个角色是看门管家。它有一整套防刷机制,这点很多同类工具没有。每看到新文本,它会先等一秒确认这句话不再变化才发请求;全程串行请求,绝不并发;单次会话最多发8000个请求。更绝的是,如果它发现游戏里的文字在"滚动"出现、或者每帧都在排队翻译,它会直接把插件关掉,防止你的网络账号被翻译服务拉黑。这套逻辑写在src/XUnity.AutoTranslator.Plugin.Core/SpamChecker.cs里,感兴趣可以翻一翻,写得相当克制。

一句话总结:探子负责"看",笔记本负责"记",管家负责"别闯祸"。明白了这个,后面所有配置项都能对号入座。

决策地图:你的游戏该走哪条路

不是所有Unity游戏都适用同一套方案。先看框架:

你的情况推荐框架说明
大多数普通Unity游戏BepInEx最主流,教程最多,新手首选
游戏只支持MelonLoaderMelonLoader部分游戏社区指定用这个
传统老游戏、无mod加载器ReiPatcher独立安装解压后跑一次安装器,双击"Patch and Run"快捷方式启动
IL2CPP打包的游戏BepInEx 6(IL2CPP版)需要对应版本插件包,功能有阉割,见后文

再看翻译服务。内置端点有十几个,不用都认识,记住这三类:

场景推荐端点要不要密钥注意事项
图省事、快速验证GoogleTranslate不需要免费但偶尔抽风,属正常现象
中日互译、中文质量优先BaiduTranslate需要AppId和密钥每月有免费额度,适合中译场景
剧情游戏、质量优先DeepLTranslate免费版不需要质量公认最好,但请求速度较慢

其余的像Bing、Papago、Yandex、彩云小译都是备选,配置方式在src/Translators/目录下各有一个独立小项目,想换就换。一个实用技巧:在配置里给FallbackEndpoint填一个备用服务,主力端点失效时自动顶上。

三个真实翻车现场

再顺的流程也会翻车。下面三个是我和身边朋友真实踩过的坑,按频率排的。

翻车一:装上后一个字都没翻译。

现象:游戏正常启动,插件也加载了,但对话全是原文。

根因十有八九是IMGUI没开。很多游戏的mod界面、旧式菜单用的是IMGUI文字框架,而它默认是关闭的——插件开发者怕它误伤性能。另一个常见原因是插件文件没放进plugins/XUnity.AutoTranslator/这个正确目录。

修复动作:先在配置里把[TextFrameworks]下的EnableIMGUI=True,保存后按ALT+U手动挂接一次文本。如果还是没反应,回去检查目录结构,对照上面的树状图逐层核对。

翻车二:中文显示成"口口口"方块。

现象:翻译生效了,但游戏里全是空心方框。

根因:游戏自带的字体文件里没有中文字形,中文根本"画"不出来。这不是翻译的锅,是显示层的锅。

修复动作:给游戏指定一个支持中文的字体。UGUI界面用OverrideFont指定字体文件路径;TextMeshPro界面优先用FallbackFontTextMeshPro,它只在缺字时才调用备用字体,比整体替换更稳。社区里有人专门整理了适配不同Unity版本的字体包,搜"XUnity 字体"就能找到,解压后填路径即可。

翻车三:开了翻译后游戏逻辑错乱、甚至闪退。

现象:某些选项点击没反应,或者走到特定剧情直接崩。

根因:少数游戏会把"屏幕上显示的文字"当成逻辑判断依据——比如剧情分支靠比对文本框内容来触发。翻译把显示文本改了,游戏的"大脑"就找不到它认识的字符串了。

修复动作:在配置里打开TextGetterCompatibilityMode=True。这个模式会"骗"游戏:显示的是译文,但游戏内部读取时看到的还是原文。注意它只对Mono环境有效,IL2CPP游戏暂不支持,遇到就只能等社区方案了。

进阶彩蛋:文档角落里藏着的好东西

跑通基础后,下面这几个功能是很多人用了半年都不知道的。

正则拆分翻译。有些游戏喜欢把"编号+物品名"拼成一行再显示,比如01 シンプルリング,你没法逐条存翻译。在翻译文件里写一行拆分正则:

sr:"^([0-9]{2}) ([\S\s]+)$"=$1 $2

这行正则把文本拆成"编号"和"物品名"两段分别翻译再拼回去。于是你只需要存一条シンプルリング=Simple Ring,所有编号变体全部命中。这就是所谓"一处翻译,处处生效"。

替换表与作用域。_Substitutions.txt可以在翻译前先把人名、专有名词替换成固定译法,避免机翻把角色名翻得乱七八糟;翻译文件里还能写#set level 1,2,3之类的指令,让某些翻译只在指定场景生效,避免不同场景的同文本互相打架。

图片也能"翻译"。很多汉化组靠这个功能做完整汉化包:打开[Texture]下的EnableTextureDumping=True,游戏会把所有界面图片导出到Translation\zh-CN\Texture,你用PS改好中文版放回去,开启EnableTextureTranslation就能替换游戏内图片。注意这两个开关只在做图时开,别随包分发。

自己写翻译服务。如果你是个程序员,src/Translators/Common.ExtProtocol/提供了扩展协议的标准实现,写个独立进程对接任何在线翻译API,比在游戏内调试舒服得多。连OpenAI这类LLM翻译都有社区做好的端点可以直接用。

该轮到你动手了

说回开头那款被我删掉的日式游戏——后来我用这套流程重新下回来,一个晚上就通了主线。没有魔法,就是装好、配好、跑通,仅此而已。

你现在硬盘里,有没有一款因为语言被我这样的"生肉劝退者"搁置的游戏?如果有,按上面的路径走一遍,十分钟后你就能看到中文。第一次看到译文在游戏里浮现的时候,记得按一下ALT+T来回切几次——那个瞬间你会明白,语言这道坎,原来真的可以绕过去。

剩下的事就简单了:玩,然后按你的习惯把翻译越调越顺。最好的汉化,从来不是别人替你做完的,而是你亲手改出来的。

【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询