Unity游戏自动翻译不求人:10分钟用XUnity.AutoTranslator把日文游戏变成中文版
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
如果你玩过只有日文版的Unity独立游戏,大概经历过那种"界面全靠猜、剧情靠脑补"的折磨。XUnity.AutoTranslator正是为这个场景而生的开源插件:它能在游戏运行时实时识别屏幕上的文本,调用谷歌、DeepL、百度等翻译服务,把日文、韩文、英文瞬间换成你熟悉的语言——不修改游戏本体,随时可以卸载,而且翻译结果会自动缓存。下面这份Unity游戏翻译插件指南,会带你从零开始,走完"下载—装进游戏—看到中文"的全过程。
先讲个真实场景:你的存档里全是乱码
朋友在Steam上买了款好评如潮的日式RPG,打开游戏,主菜单三个大字"はじめから",他对着手机查了五分钟才知道是"从头开始"。进游戏后每句对话都要截图翻译,30分钟只推进了两句剧情,最后他默默把游戏退款了。
这其实不是个例。大量优秀的Unity游戏根本没有官方中文,汉化组补丁又常常滞后几个月甚至永远等不到。而XUnity.AutoTranslator的思路完全不同:它不去改游戏,而是"偷听"游戏在屏幕上的文字。
插件通过挂钩(hook)技术,在文本显示给玩家的瞬间拦截它,送去翻译服务,再把译文原样替换回去。你看到的还是那个界面,只是文字变成了中文。整个过程不需要改任何游戏文件,卸载插件就等于卸载翻译,干净利落。
最短路径:三步让游戏说中文
先别研究高级配置,跟着这条最短路径走,10分钟内你就能在游戏里看到中文。
第一步,装好插件管理器。插件需要一个"宿主"来加载自己,最常见的是BepInEx(面向Mono版Unity游戏)和MelonLoader(面向IL2CPP编译的游戏)。到对应官网下载最新版,解压到游戏根目录,先启动一次游戏再退出,让管理器生成目录结构。
第二步,放入插件本体。从发布页面下载对应版本的压缩包(名字里带BepInEx就装BepInEx,带MelonMod就装MelonLoader),解压后把plugins、core等目录合并进游戏目录。BepInEx玩家最后的目录结构长这样:
游戏目录/ ├── BepInEx/ │ ├── core/ # 公共依赖库 │ └── plugins/ │ ├── XUnity.ResourceRedirector/ │ └── XUnity.AutoTranslator/ │ └── Translators/ # 翻译引擎都放在这里 └── winhttp.dll # BepInEx的入口第三步,启动游戏等结果。启动游戏后,插件会自动生成配置文件BepInEx/config/XUnity.AutoTranslator.cfg并开始工作。看到游戏里的文字从日文变成中文,或者按ALT+T能在译文和原文之间来回切换,就说明安装成功。
一个可预期的验证标准:第一次进游戏时文字可能还会闪一下原文,随后变成译文——这是正常的,因为插件正在逐句翻译并写入缓存。同一句话第二次出现时,基本是秒出中文。
按需配置:你的游戏该用哪种方案
不同游戏"体质"不同,配置思路也不一样。先看配置文件里最核心的两行:
[General] Language = zh-CN ; 目标语言,翻译成什么 FromLanguage = ja ; 源语言,游戏原文是什么场景一:日系RPG / 视觉小说,追求翻译质量
这类游戏对话密集、语句长,翻译质量直接决定体验。建议把翻译引擎从默认的GoogleTranslateV2换成DeepL,它的日译中质量公认最好。配置里加上:
[Service] Endpoint = DeepLTranslate FallbackEndpoint = GoogleTranslateV2 ; 主引擎挂了自动切备用 [Behaviour] MaxCharactersPerTranslation = 500 ; 允许更长文本单次翻译 MinDialogueChars = 5 ; 太短的文本不翻译,省请求DeepL免费版不需要API密钥就能用(不保证稳定),想要更稳可以注册DeepL API并改用DeepLLegitimate,每个月有50万字符的免费额度,个人玩通关一款游戏绰绰有余。
场景二:韩文、英文游戏,或者只想快速看懂
优先用免费且无需密钥的GoogleTranslateV2(默认就是它)或BingTranslate。如果游戏文字量巨大、担心免费接口限流,就在配置里加上缓存优化:
[Behaviour] EnableBatching = True ; 多条文本合并成一次请求 CacheWhitespaceDifferences = True场景三:中文输入的游戏,比如国产Unity作品要翻成英文
把FromLanguage和Language对调即可,逻辑完全一样。配置文件里所有语言代码都遵循标准缩写,比如中文简体是zh-CN、日文是ja、韩文是ko、英文是en。
场景四:游戏用IL2CPP编译(启动文件是GameAssembly.dll)
这类游戏装不了BepInEx 5,必须用BepInEx 6(IL2CPP版)配BepInEx-IL2CPP包,或者直接用MelonLoader。别选错包,这是最常见的安装失败原因。
过来人的避坑清单
这几个坑几乎每个新手都会踩,提前知道能省下大量排查时间。
坑一:文字纹丝不动,什么都没翻译。先按ALT+U手动触发文本挂钩——很多游戏的文本不走默认挂钩路径,需要手动抓一次。再不行就检查日志:BepInEx的日志在BepInEx/LogOutput.log,看到网络超时就是接口被墙,换翻译引擎或挂代理;看到"endpoint is down"就是服务端限流,等一会儿再试。
坑二:翻译出来了但中文挤成一团。大多数Unity游戏默认字体不含中文字形。解决方案是在[Behaviour]里配置OverrideFont指向一个支持中文的字体文件(比如思源黑体),TextMesh Pro的文本则用FallbackFontTextMeshPro指定一个SDF字体资源。配好后按ALT+F可以一键切换字体验证效果。
坑三:游戏逻辑错乱,比如选完选项没反应。某些游戏会拿显示出来的文字做逻辑判断,译文会让它"认不出来"。这时启用TextGetterCompatibilityMode = True,插件会"骗"游戏说屏幕上还是原文,但玩家看到的是译文。
坑四:插件加载失败。九成是版本不匹配:BepInEx 5的包装到了BepInEx 6上,或者IL2CPP包装到了Mono游戏上。对照压缩包名字和你的游戏类型,基本能排除掉这个问题。
再往前一步:从"会用"到"会玩"
当你不再满足于逐句翻译,可以试试这几个更进阶的玩法。
给固定名词加固定译法。游戏里"世界樹"这种专有名词,翻译引擎可能每次译得都不一样。打开自动生成的Translation/zh-CN/Text/_Substitutions.txt,按"原文=译文"的格式逐行写入,保存后按ALT+R热重载,立刻生效。这个文件也可以自己从零创建,是汉化补丁作者最爱用的工具。
参与翻译缓存的人工校对。所有自动翻译都会落到Translation/zh-CN/Text/_AutoGeneratedTranslations.txt,你可以直接在文件里修改某句翻译,下次游戏里就会用你改过的版本——这等于给了你一个"事后编辑"的入口,很多社区汉化的初稿就是这么攒出来的。
自己接一个翻译引擎。官方支持的引擎清单很丰富,从谷歌、必应、DeepL、百度到Papago、Yandex、Watson都有。源码里每个引擎都是一个独立小项目,放在src/Translators/目录下,结构极其清晰——照葫芦画瓢,实现一个接口就能接入你自己的翻译服务。
做完整的汉化补丁。插件还内置了资源重定向能力,可以替换游戏内的图片、字体、TextAsset资源。配合纹理翻译功能,连游戏里贴图上的文字都能处理。相关实现位于src/XUnity.AutoTranslator.Plugin.Core/,想深入研究的可以从Endpoints目录看起。
最后说两句
回到开头那个退款的朋友。后来他用XUnity.AutoTranslator重装了那款游戏,第一句"はじめから"在屏幕上闪了一秒就变成了"从头开始",那天晚上他玩到了凌晨三点。
这就是这款工具的价值:它不承诺完美的翻译,但承诺让你今天就能玩上原本玩不了的游戏。从默认配置开始,遇到问题按文中的坑位逐个排查,你很快能找到最适合自己那款游戏的配置组合。
如果你也想动手试试,直接克隆项目源码研究,或者下载预编译包开始折腾:
git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator翻译配置没有标准答案,但动手尝试的快乐是相通的。祝你早日玩上心心念念的那款游戏。
【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考