日文游戏啃不动?XUnity.AutoTranslator 让 Unity 游戏在3分钟内开口说中文
日文游戏啃不动XUnity.AutoTranslator 让 Unity 游戏在3分钟内开口说中文【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator如果你玩过日文原版游戏一定经历过这样的时刻剧情正到高潮满屏假名扑面而来你只能对着截图逐句查词典等翻译软件出结果时那股情绪早就凉了一半。XUnity.AutoTranslator 就是为解决这件事而生的——它是一款专为 Unity 游戏打造的实时自动翻译插件能识别游戏内正在显示的文本即时调用翻译服务把译文直接替换到画面上让你像读母语一样继续玩下去。这篇文章不打算按安装→配置→FAQ的说明书顺序讲。我把它写成一次真实的通关记录从你第一次把它装进游戏到踩过的坑再到把它调教到满意的全过程。你跟着走一遍基本就摸清这个项目的脾气了。第一次见面它到底是怎么看见游戏文字的先别急着动手花 30 秒理解一件事Unity 游戏里的文字并不是画在屏幕上的图片而是由 UGUI、NGUI、TextMeshPro 这类 UI 框架动态渲染出来的文本组件。XUnity.AutoTranslator 的思路很直接——它往这些文本组件的更新逻辑里插入钩子只要游戏准备显示一段新文字钩子就先把它拦下来查一下翻译缓存有结果就直接换掉没结果就排队交给翻译引擎。这就是它最核心的价值你不改游戏文件不动存档插件在你和游戏之间当了个即时翻译官。项目目录里有几个名字你以后会常碰到XUnity.AutoTranslator.Plugin.Core是核心库负责钩子、缓存和翻译调度Translators文件夹下则是各家翻译引擎的独立插件比如 Google、Bing、DeepL、Papago想换引擎就换对应的 dll。第一关3分钟跑通先让它出声别追求完美配置先让翻译转起来后面再慢慢调。最省事的路径是 ReiPatcher 独立安装它不依赖任何外部框架从项目仓库下载XUnity.AutoTranslator-ReiPatcher-{VERSION}.zip解压到游戏根目录确保SetupReiPatcherAndAutoTranslator.exe和其他 exe 同级双击运行安装程序等它配置完毕用生成的{游戏名} (Patch and Run).lnk快捷方式启动游戏第一次启动会慢几秒因为它在做两件事打补丁以及生成配置文件。这一步最关键——配置文件名是AutoTranslatorConfig.ini它决定了后面的一切。如果你已经在用 BepInEx 框架那就更简单了下载XUnity.AutoTranslator-BepInEx-{VERSION}.zip解压进游戏目录插件 dll 会自动落到BepInEx/plugins/XUnity.AutoTranslator启动游戏即可。MelonLoader、IPA、UnityInjector 用户同理各自有对应的安装包README 里都写得很清楚。启动后按ALT0屏幕一角会弹出设置窗口。看到它恭喜第一关过了。第二关认识那四个热键比配置更重要在动手改配置前先把这四个快捷键按一遍它们是你后面排错的主力ALT0打开/关闭设置界面ALTT在原文和译文之间切换显示ALTR重新加载翻译文件改完文本文件不用重启游戏ALTU手动触发文本钩子自动钩子没抓到的文字用它补救ALTT这个键特别值得记牢。当你怀疑这句是不是没翻译按一下它原文立刻显示出来——这是最快判断问题出在没翻译还是翻译了没显示的办法。第三关读懂配置文件你就赢了80%打开AutoTranslatorConfig.ini核心就三个区块其余大部分保持默认即可[Service] EndpointGoogleTranslateV2 ; 翻译引擎想换就换这里 [General] Languagezh-CN ; 目标语言中文 FromLanguageja ; 游戏原文语言日语 [TextFrameworks] EnableUGUITrue ; UGUI多数 Unity 游戏默认用这个 EnableTextMeshProTrue ; TextMeshPro另一大主流 EnableNGUITrue ; NGUI老游戏常见 EnableTextMeshFalse ; 3D 漂浮文字默认关 EnableIMGUIFalse ; 老式即时模式 UI默认关第一个坑通常就出在这里有些框架默认是关闭的。游戏跑起来大部分文字翻译了某个菜单还是原文——别慌多半是那个界面用的框架没启用。README 里明确提醒过这一点翻译不完整时优先回来看看这里。改完配置按ALT0在设置界面切换一下或者重启游戏让它重新读取。第四关当翻译质量开始让你皱眉跑通之后你大概率会碰到第二个问题翻译能用但总有几个名字、几个术语翻得不对。别急着换引擎先用项目自带的四件套文本文件它们的路径都在配置的[Files]区块里_AutoGeneratedTranslations.txt自动生成的翻译记录它的优先级最低用来当底稿_Substitutions.txt替换规则适合修人名、专有名词——把常被翻错的名字固定下来_Preprocessors.txt发给翻译引擎前的文本预处理_Postprocessors.txt拿到译文后的后处理举个例子游戏里角色名シンプルリング老被译成奇怪的词你就在_Substitutions.txt里写シンプルリングSimple Ring保存后按ALTR立刻生效不用重启游戏。更进阶一点文本文件还支持正则。项目提供了两种前缀这个设计相当巧妙r:^アイテム ([0-9])$物品 $1r:是标准正则——直接匹配整段文本捕获组用$1引用。适合物品 12这种规律性文本一条规则覆盖所有编号。sr:^([0-9]{2}) ([\S\s])$$1 $2sr:是拆分正则——游戏有时会把多段文字拼在一起显示比如装备名前加序号你先用正则在翻译前把它拆开逐段翻译后再拼回去。这样文件里只需维护一条シンプルリングSimple Ring所有01 シンプルリング、02 シンプルリング都能命中。要注意的是正则别滥用README 反复强调要克制使用因为它是性能杀手。第五关踩坑时刻报错时优先检查这三个地方玩到一半突然发现翻译不动了别慌按这个顺序排查先看是不是被自保机制误杀了。这是这个插件相当有性格的设计——为了不把免费翻译服务打到封号它内置了 16 条防滥用规则新文本出现后要等 1 秒确认它不再变化才发请求整个游戏会话最多发 8000 次请求同一时刻只发 1 个请求绝不并发如果连续 5 次请求没返回结果或者检测到文本每帧都在变典型的滚动字幕它会主动停机保护。所以翻译突然停了先想想是不是触发了保护。如果只是服务端抽风导致停机解决完问题后按ALTQ就能重启插件。再检查日志。BepInEx 用户看BepInEx/LogOutput.log里面会写明插件加载状态和报错原因。最后检查网络。免费翻译服务Google、Bing 这些不稳定是常态README 原话是随时可能失效。如果某个引擎反复失败就换一个。[Service]区块里还有个FallbackEndpoint参数可以设一个备用引擎主引擎失败时自动顶上。第六关进阶玩法从能用到好用中文字体发虚/缺字这是最经典的坑很多日文游戏自带字体不含中文字形翻译成中文后满屏方块。解决办法是字体覆盖配置里有两个参数[Behaviour] OverrideFont你的字体文件 ; UGUI 专用 FallbackFontTextMeshPro ; TextMeshPro 专用推荐用它FallbackFontTextMeshPro的用法比OverrideFontTextMeshPro温和——它只是给 TextMeshPro 加一个后备字体原字符缺失时才用它顶上而不是全盘替换。UI 里中英日混排时体验好很多。对话框文字太挤让插件帮你排版译文通常比原文长塞进原来的对话框就会溢出。插件默认开启EnableUIResizingTrue它会尽力调整文本组件的溢出方式。如果还不行可以在翻译目录放一个resizer.txt文件手动控制字号CharaCustom/CustomControl/CanvasDrawChangeFontSizeByPercentage(0.5)等号左边是组件路径的一部分右边是命令——上面这行会把该路径下所有文字字号缩到 50%。路径怎么找README 的建议是配合 Runtime Unity Editor 之类的工具查看或者开[Behaviour] EnableTextPathLoggingTrue让插件把文本路径打出来。有些文字游戏用图片显示怎么办很多老游戏把标题、菜单做成了图片。项目从 2.16.0 起支持图片替换开EnableTextureTranslationTrue和EnableTextureDumpingTrue插件会把游戏里的贴图导出到Translation\{Lang}\Texture目录文件名带哈希后缀。你用 PS 改好图、保留哈希改名存回去进游戏就会被替换。默认关闭是有原因的——贴图转储对性能影响很大而且这不是自动翻译得你手动改图。想给某个插件单独配翻译把翻译文件按插件隔离放到Translation\{Lang}\Text\Plugins\插件dll名目录下文件开头加一行#enable fallback就能让插件专属翻译在未命中时回退到通用翻译。这对翻译模组 UI 特别有用。第七关如果你是开发者这个项目留着有大用模组作者可以调用它的翻译能力。官方提供了干净的接口比如异步翻译AutoTranslator.Default.TranslateAsync( untranslatedText, result { if( result.Succeeded ) { var translatedText result.TranslatedText; } } );同步查缓存if( AutoTranslator.Default.TryTranslate( untranslatedText, out string translation ) ) { // 命中缓存 }想给游戏加自己的翻译引擎也不难——实现ITranslateEndpoint接口就四个属性和两个方法编译成 dll 丢进Translators文件夹即可。项目源码里就有完整的 Yandex 实现当范例。仓库里src/Translators目录下的各家引擎实现本身就是最好的学习教材。最后一句话从第一次按ALT0看到设置界面到把字体、正则、图片替换都调顺XUnity.AutoTranslator 的每一步都在回答同一个问题怎么让玩家少受语言折磨。它免费、开源、社区活跃支持 BepInEx、MelonLoader、IPA、UnityInjector 几乎全部主流框架连 IL2CPP 游戏也有专门的安装包。现在就去下载一个安装包挑一款你一直想玩却啃不动的游戏试试。第一次看到日文原版对话变成中文的那一刻你会觉得前面这几分钟都值了。遇到问题就回来翻 README——它比任何教程都详尽里面连防滥用机制的原理、文本查表的四次回退逻辑都写得明明白白。放心这条路前人已经铺得很平了。【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考