尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

让任何 Unity 游戏开口说中文:XUnity.AutoTranslator 从零到精通的实战攻略

让任何 Unity 游戏开口说中文:XUnity.AutoTranslator 从零到精通的实战攻略 让任何 Unity 游戏开口说中文XUnity.AutoTranslator 从零到精通的实战攻略【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator你期待了三个月的一款 Unity 游戏终于发售兴冲冲打开却发现满屏日文假名、英文选项和看不懂的技能说明——关掉游戏的那一刻你心里一定骂了一句要是能翻译就好了。XUnity.AutoTranslator 正是解决这个问题的终极方案它是一款面向 Unity 游戏的自动翻译插件能在游戏运行时实时抓取对话、菜单、提示等所有文本并翻译成你的母语同时提供了手动精修、字体替换、图片翻译等一整套把游戏变成母语的能力。但先泼一盆冷水网上的教程大多只告诉你装好、能用却没人告诉你为什么装了之后有些文本不翻译、为什么中文全是方块、为什么翻出来的句子读不通。这篇文章不谈源码只讲实战按从能用到好用、从好用到了不起的顺序带你一步步把 XUnity.AutoTranslator 玩明白。一、先让游戏开口说人话10 分钟跑通自动翻译对号入座选择适合你的安装方式XUnity.AutoTranslator 的安装方式非常多别纠结按你游戏已有的模组环境选就行安装方式适合谁文件放哪说明ReiPatcher 独立版游戏还没装任何模组管理器解压到游戏根目录运行SetupReiPatcherAndAutoTranslator.exe免依赖、双击即用最省心BepInEx 插件版已装或准备装 BepInExBepInEx/plugins/XUnity.AutoTranslator/目前最主流、文档最全MelonLoader 插件版已装 MelonLoaderMods/和UserLibs/新版 MelonLoader 用户IPA 插件版特定游戏必须用 IPAPlugins/少数老游戏专用IL2CPP 支持反编译类IL2CPP游戏对应 BepInEx 6 或 MelonLoader IL2CPP 版需用 BepInEx-IL2CPP 专用安装包一句话决策没装过任何模组管理器 → ReiPatcher 独立版有 BepInEx → 用 BepInEx 插件版。千万别在已有模组管理器的游戏上再装 ReiPatcher 独立版两者会打架。完整可复现示例从下载到看到第一句中文以 BepInEx 插件版为例全程跟着做10 分钟内有结果第 1 步获取插件源码或发行包git clone https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator也可以直接下载编译好的发行包XUnity.AutoTranslator-BepInEx-{版本}.zip两者效果一致普通玩家直接拿发行包即可。第 2 步解压到游戏目录把压缩包内容解压进游戏根目录确认关键文件就位游戏目录/BepInEx/plugins/XUnity.AutoTranslator/ ├── XUnity.AutoTranslator.Plugin.Core.dll # 插件核心 ├── XUnity.AutoTranslator.Plugin.BepInEx.dll # BepInEx 适配层 ├── XUnity.AutoTranslator.Plugin.ExtProtocol.dll ├── ExIni.dll # 配置文件读写库 └── Translators/ # 各翻译服务插件放这里第 3 步启动一次游戏让它自动生成配置正常启动游戏一次再退出。插件会在BepInEx/plugins/XUnity.AutoTranslator/下自动生成Config.iniReiPatcher 独立版则生成在游戏根目录旁。不要自己手写这个文件让插件生成再改格式最保险。第 4 步改三行配置指定语言和翻译服务打开Config.ini把这几项改成你想要的默认源语言是日语、目标语言是英文改了就对了[General] Languagezh-CN ; 目标语言简体中文要繁体写 zh-TW FromLanguageja ; 源语言游戏原文是日语英文游戏改成 en [Service] EndpointGoogleTranslateV2 ; 翻译服务免费无需密钥先用它跑通第 5 步启动游戏验证效果再次启动游戏进入有对话或菜单的界面。按下ALT0呼出翻译状态面板看到文本被替换成中文就说明你成功了。再按ALTT可以在原文 / 译文之间来回切换方便对照。如果界面还是原文多半是文本框架没启用别急第三章专门解决这类问题。记住这几个快捷键立刻提升体验快捷键作用什么时候用ALT 0显示/隐藏翻译状态面板验证插件是否在工作ALT T切换原文/译文对照检查翻译质量ALT R重新加载翻译文件手动改了翻译文件后热更新ALT U手动触发文本钩子默认钩子没抓到的顽固文本ALT F切换自定义字体配置了字体覆盖后对比效果至此游戏已经能翻译了。但机器翻译的质量你懂的——人名翻错、术语乱翻、长句读不通。接下来就是这篇文章的重头戏把自动翻译变成你的专属汉化。二、把机器翻译调教成专属汉化动手改翻译文件自动翻译有个致命问题同一句话每次启动都重新请求费流量还时好时坏。XUnity.AutoTranslator 的解法是——把所有翻过的文本落盘成文件你随时能改改完它就是你的翻译。这套文件系统才是这个项目最值钱的设计。翻译文件系统长什么样首次运行后插件会生成这样的目录以 BepInEx 方式为例游戏目录/BepInEx/Translation/zh-CN/Text/ ├── _AutoGeneratedTranslations.txt # 自动翻译缓存所有机器翻译都写这里 ├── _Substitutions.txt # 替换表进翻译前先做字符替换 ├── _Preprocessors.txt # 预处理发给翻译服务前修改文本 └── _Postprocessors.txt # 后处理拿到译文后修改文本规则很简单_AutoGeneratedTranslations.txt是插件自动生成的优先级最低你在Text/下新建的任何.txt文件如Manual.txt、Items.txt都会被读取且优先级更高同一原文在多个文件里出现时自动生成的那个永远最后生效——这就是你纠正机器翻译的窗口。最小实操改一条翻译并立刻生效它解决什么问题机器把角色名翻错了你希望固定成正确译名。怎么做在Text/目录新建一个Manual.txt写入マコト真琴 アイテム屋道具店保存后在游戏里按ALTR热加载不用重启游戏新翻译立刻生效。效果从此游戏里再出现这两句话直接显示你写好的译文既不消耗翻译请求又 100% 准确。给特定模组做专属翻译游戏里装了战斗模组、UI 美化模组它们的文本经常和主游戏冲突。这时用插件专属翻译游戏目录/BepInEx/Translation/zh-CN/Text/Plugins/我的模组Dll名/翻译.txt要点在Text/下建Plugins/文件夹每个子文件夹以模组 DLL 文件名不含扩展名命名文件夹内的翻译文件只对该模组的文本生效文件里写上#enable fallback允许该模组的翻译在缺失时回退到全局翻译。效果模组文本和游戏本体互不干扰一套翻译文件可以随模组分发给其他玩家。手动翻译可以做到 100% 准确但前提是你得知道游戏里每句话原文是什么。别急——自动生成的缓存文件已经把原文和译文一一列出来了你要做的只是挑刺改错而不是从零翻译。三、治服漏网之鱼动态文本、模组 UI 和疑难句式正则表达式一网打尽动态文本游戏中大量文本是动态拼接的比如等级 35、物品 #12、金币 9999。这类文本每次数值都变无法逐条翻译但它们的模式固定。这时用正则表达式翻译一行规则覆盖无数条文本。在任意翻译.txt文件中写入键以r:开头即为正则r:^等级 ([0-9])$等级 $1 r:^アイテム ([0-9])$道具 $1 r:^お金: ([0-9])G$金币: $1G效果$1是捕获组占位符运行时会把原文中的数字原样带回译文。等级 35、アイテム 7从此稳定翻译且不再消耗翻译请求。正则规则位于项目的src/XUnity.AutoTranslator.Plugin.Core/Parsing/目录中有心人可以研究更多高级玩法。用替换表修正顽固专有名词有些词人名、地名、技能名不管哪家翻译服务都翻不好而且每次翻译都白烧流量。用_Substitutions.txt在翻译之前就把它换掉カズマ和真 アクア阿库娅更进阶的用法是参数化替换——原文中夹着会变的片段时用{{A}}占位私は{{A}}我是{{A}}效果私は勇者会被翻译成我是勇者且结构稳定比直接扔给机器翻译靠谱得多。预处理与后处理对译文做美容_Preprocessors.txt发给翻译服务前先改文本比如把amp;之类的 HTML 实体还原、把容易翻坏的符号换掉_Postprocessors.txt拿到译文后做修正比如把全角符号统一成半角、把〜替换成~。格式同样是原文替换且支持{{A}}参数化。这俩文件解决的是机器翻译结果里的小瑕疵攒多了你会发现翻译质量肉眼可见地变顺。模组 UI 不翻译打开 IMGUI很多模组的设置界面用的是 Unity 的 IMGUI 框架而它默认关闭因为太容易误抓文本、浪费请求。如果你确实需要翻译这类界面在Config.ini里打开[TextFrameworks] EnableIMGUITrue同时可配合[Behaviour]下的BlacklistedIMGUIPlugins把不需要翻译的模组窗口名列进去排除掉避免误伤。到这里动态文本、模组文本、疑难句式都能拿下了。但很多中文玩家会卡在最尴尬的一步——翻译出来了全是方块字。下一章解决显示问题。四、让中文真正显示出来字体、UI 缩放与图片翻译中文变方块覆盖字体Unity 游戏默认字体大多不带中文字形翻成中文后满屏□□□。解决办法是给插件指定一个中文字体。针对不同文本框架配置不同[Behaviour] ; UGUI 界面用填你放进游戏目录的字体文件路径支持 .ttf/.otf OverrideFont我的中文字体.ttf ; TextMeshPro 用优先用 Fallback只补缺字不替换原有字体 FallbackFontTextMeshProFonts Materials/ARIAL SDF效果OverrideFont会把 UGUI 全部文本换成指定字体FallbackFontTextMeshPro只在中文字符缺字时才用备用字体最大限度保留游戏原版观感。改完按ALTR或重启游戏方块字立刻变中文。翻译变长撑爆对话框交给 UI 自动缩放中文通常比日文长翻完后文字溢出、按钮错位很常见。插件默认开启了EnableUIResizingTrue会自动调整文本组件的溢出处理方式还可以微调行距[Behaviour] EnableUIResizingTrue ResizeUILineSpacingScale0.80 ; 行距缩放到 80%让长文本装得下效果长译文会自动换行而不是溢出屏幕配合ALTF对比字体效果界面基本能保持原版美感。图片里的文字怎么翻纹理翻译过场 CG、技能图标、地图标记……这些文字是画在图片里的文本钩子抓不到。XUnity.AutoTranslator 用纹理翻译解决先把游戏纹理导出成图片你用画图工具把文字 PS 成中文再放回原位。先开启导出让插件帮你把能翻译的图导出来[Texture] TextureDirectoryTranslation\{Lang}\Texture EnableTextureTranslationTrue EnableTextureDumpingTrue ; 导出可替换的纹理首次开启性能会明显下降导完就关导出的图片位于Translation/zh-CN/Texture/下图片文件名带唯一哈希。修改图片后原样放回游戏内就会自动替换。效果连 CG 上的日文都能变成中文本地化完成度直接拉满。深度定制资源重定向如果游戏把文本打包进了 TextAsset、AssetBundle 等资源文件可以用资源重定向功能整体替换[ResourceRedirector] PreferredStoragePathTranslation\{Lang}\RedirectedResources EnableTextAssetRedirectorTrue EnableDumpingTrue ; 把可翻译资源导出到上述目录改完放回即生效效果适合制作完整汉化包分发给玩家是资源级替换的终极大招。显示问题解决了翻译源也该提上日程了。前面一直用免费的 GoogleTranslateV2但它偶尔抽风、质量波动而且国内网络环境不一定连得上。最后一章帮你把翻译源一次选明白。五、选对翻译源免费、付费还是本地离线[Service] Endpoint就是翻译源开关插件内置了十几种端点分四类类别端点示例是否需要密钥特点免费在线GoogleTranslateV2、BingTranslate、PapagoTranslate、LingoCloudTranslate否开箱即用偶尔不稳定免费但需密钥GoogleTranslateLegitimate、BingTranslateLegitimate、YandexTranslate是有免费额度如 Yandex 每月约 1000 万字符稳定付费高品质DeepLTranslate免费版/ DeepLLegitimate需 API Key部分需要DeepL 译文质量公认顶尖适合剧情向游戏本地离线ezTrans XP、LecPowerTranslator15否但需装对应软件不联网、不烧流量日韩翻译场景多自定义 HTTPCustomTranslate自定义指向你自己的翻译服务 URL开发者向以质量优先的推荐配置DeepL 免费版无需密钥[Service] EndpointDeepLTranslate FallbackEndpointGoogleTranslateV2 ; 主服务失败时自动降级双保险以稳定性优先的配置Yandex 需去官网申请免费 API Key[Service] EndpointYandexTranslate [Yandex] YandexAPIKey你的密钥无论选哪个在线服务插件都内置了 16 条防刷机制同一文本 1 秒内不重复请求、单次会话最多 8000 条、同时只发一个请求、连续失败自动熔断……所以你不用担心翻译请求把服务商打爆。代价是如果连续出错插件会自动停机——遇到这种情况按ALTQ可尝试重启。六、常见问题速查表问题现象可能原因解决方法完全没有翻译插件没加载 / 配置文件格式坏了检查 DLL 文件是否在正确目录删掉Config.ini重启游戏让它重新生成部分文本不翻译对应文本框架默认关闭在[TextFrameworks]中打开EnableIMGUI/EnableTextMesh再按ALTU手动钩取游戏崩溃或功能错乱游戏根据显示文本判断逻辑设置TextGetterCompatibilityModeTrue翻译出来全是方块游戏字体不含中文字形配置OverrideFont或FallbackFontTextMeshPro模组界面不翻译IMGUI 未开启EnableIMGUITrue并用BlacklistedIMGUIPlugins排除干扰窗口翻到一半插件罢工连续错误触发熔断检查网络/服务可用性后按ALTQ重启插件界面文字溢出错位译文比原文长确认EnableUIResizingTrue并调小ResizeUILineSpacingScale想翻译但不想联网在线端点总是不稳定换 ezTrans XP 或 LEC 本地离线端点或自建CustomTranslate服务七、下一步行动建议如果你是新手先用 ReiPatcher 独立版或 BepInEx 插件版跑通一次自动翻译记熟ALT0、ALTT、ALTR三个快捷键打开_AutoGeneratedTranslations.txt把游戏里最常出现的 20 句话改成你满意的译文遇到方块字先别慌优先配置FallbackFontTextMeshPro看缺字是否解决。如果你是进阶用户为你的游戏整理一套分层翻译文件Manual/UI.txt、Manual/Dialogues.txt、Manual/Items.txt告别一团乱麻用正则表达式覆盖游戏中的动态文本观察_AutoGeneratedTranslations.txt里请求量的下降尝试纹理翻译开启EnableTextureDumping导出图片PS 修改主菜单等关键界面。如果你是开发者研究src/Translators/CustomTranslate/目录用任意语言实现一个符合?fromtotext规范的 HTTP 翻译端点阅读src/XUnity.AutoTranslator.Plugin.Core/下的端点接口为你的团队或社区实现自定义ITranslateEndpoint借助TranslationRegistryAPI把你的翻译文件直接嵌入自己开发的模组中随模组分发给用户。写在最后XUnity.AutoTranslator 最动人的地方在于它不只是一个翻译插件而是一套完整的游戏本地化工作流——自动翻译负责快翻译文件系统负责准字体与纹理替换负责美十余种翻译源负责稳。从你按下ALT0看到第一句中文开始到最终打磨出一份属于自己的完整汉化包这个过程本身就是把一款别人的游戏变成你的游戏的奇妙旅程。记住两件事好的翻译需要耐心机器翻完、人工打磨才是正道以及这个项目仍在活跃更新新版本常带来性能改进和新端点支持记得定期关注它的发布动态。现在关掉这篇教程去打开那款让你心痒已久的游戏吧——它正在等你说一句这回我看得懂了。【免费下载链接】XUnity.AutoTranslator项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表