引擎指南FAQPatreonDiscord下载
登录
RuneTranslate · 端到端翻译日式游戏
引擎指南对比图片文字存档编辑器作弊模式FAQ下载PatreonDiscordYouTube隐私政策服务条款联系我们
全部文章
unity · tutorial · engine

如何将 Unity 游戏翻译成英语

2026年6月9日·6 分钟阅读

用 RuneTranslate 翻译 Unity 游戏 —— 读取 TextAssets、MonoBehaviour 字段(Mono 和 IL2CPP)和 StreamingAssets,讲清为何仅限外部化文本,以及标识符守卫如何让你不弄坏游戏。

Unity 是越来越多日本独立游戏和视觉小说背后的引擎 —— 也是常见引擎中最难翻译的,因为 Unity 没有单一的文本格式。对话可能住在 TextAsset 数据块里、MonoBehaviour 字符串字段里、松散的 StreamingAssets 脚本里,或直接编译进一个 C# DLL 里。本指南带你用 RuneTranslate 翻译一个 Unity 游戏,同样重要的是,讲清让 Unity 与众不同的那条规则:仅外部化文本。

先说大警告:仅外部化文本

RuneTranslate 翻译住在数据里的 Unity 文本 —— 引擎在运行时加载的资源文件,包括 MonoBehaviour 组件上的字符串字段(对话、名字、标签)。它在 Mono 和 IL2CPP 两种构建上都读取那些字段:Mono 上类型布局来自游戏自己的 DLL,IL2CPP 上则在没有 Managed/ 文件夹时从 IL2CPP 元数据重建。它够不到的是硬编码进编译过的 C# 代码本身(Assembly-CSharp.dll)里的文本。实践中,把脚本保存在资源和组件里的游戏翻译得很好 —— 而打开项目这第一步,会告诉你手头有什么。

你需要准备什么

  • Windows 版 RuneTranslate —— 免费,每一种引擎和翻译服务都已解锁。
  • 一个 Unity 游戏文件夹 —— 含有游戏 .exe 和一个 <GameName>_Data/ 文件夹(含 globalgamemanagers、resources.assets、data.unity3d 和 level* 文件)的目录。
  • 一个目标语言 —— 英语、西班牙语、法语、德语、葡萄牙语、俄语、中文、意大利语、土耳其语、越南语,以及 20 多种其他语言。
  • 一个翻译服务。免费的 Google Translate 开箱即用;DeepL 有免费档位;OpenAI、Anthropic、一个本地模型,以及任意 OpenAI 兼容 API 都需要自备密钥。

第 1 步:打开游戏文件夹

启动 RuneTranslate,点击 新建项目,把它指向 Unity 游戏目录。引擎检测会寻找 _Data/ 文件夹并把项目识别为 Unity。一个捆绑的 UnityPy Python 附属程序(随安装程序发布)会打开资源文件,并把可读字符串列进一个每项目工作区,位于 %APPDATA%/RuneTranslate/unity-workspace/<projectId>/。你的原始游戏文件夹永远不会被修改。Unity 是一个尽力而为的引擎 —— 在重新分发之前先验证导出的构建能运行。

第 2 步:字符串如何被提取

RuneTranslate 从 Unity 外部化文本的每一处读取文本:

  • TextAssets —— 嵌在 .assets 和 AssetBundles 里的 JSON / CSV / 脚本数据块,由一个格式感知的提取器切分。
  • MonoBehaviour 字符串字段 —— 组件上的显示文本(对话、名字、标签),在 Mono 和 IL2CPP 两种构建上(类型信息来自游戏的 DLL,或从 IL2CPP 元数据重建)。
  • StreamingAssets —— 直接在磁盘上遍历的松散脚本文件(.json、.txt、.csv、.tsv、.xml、.yaml、.ks 等等)。
  • 加密的 Addressable bundles —— 对其 Addressable 资源包做 AES 加密的游戏会被自动解密(密钥从包自己的文件名派生),于是它们的文本像任何其他包一样提取。

Unity 也是过度翻译危害最大的地方,所以 RuneTranslate 为它配了一个守卫。许多 MonoBehaviour 字符串根本不是显示文本 —— 它们是控制标识符和流程操作数:一个 LoadScene 调用按字符串解析的场景名、消息路由键、动画 / 音效片段名、Live2D 部件名,以及 Fungus If / SetVariable 逻辑里的比较值(例如一个像 村落出口 的标志)。翻译了那些,游戏就会悄无声息地坏掉 —— 经典症状是一个无休止的"loading"画面,没有错误。RuneTranslate 会把这些自动归类为排除(显示为红色,仅可选择加入),于是编辑器浮现真正的对话和标签,而不去动机器逻辑。Fungus {$var} 替换和 {color=...} / TMP <...> 标记被屏蔽在占位符之后,让它们原封不动地熬过翻译。

第 3 步:翻译并审校

选一个翻译服务并运行。DeepL 或一个 LLM 对对话读起来最好;免费的 Google Translate 覆盖菜单和物品名。先给你的角色阵容和反复出现的术语建好术语表 —— 参见 术语表 101。每一行都落进编辑器里,紧挨它的源文;就地编辑(失焦或 Ctrl+Enter 时保存),并运行可选的 AI 润色器 做一遍二次校对。免费档位以适度限流运行(在 AI 服务上大约慢 2 倍,在抓取器上更少)—— 同样的引擎、同样的输出质量;付费只是以全速运行。

第 4 步:导出可玩的版本

点击 导出。RuneTranslate 会复制游戏,然后就地把译好的字符串打补丁写回资源文件。同一个排除守卫在写回时也会运行,于是一个较旧的项目无法在重新导出时意外推送一个译好的场景名或流程操作数。输出是一个完整、可运行的游戏副本,位于你选择的位置 —— 启动 .exe,它就用你的目标语言游玩。

翻译成一种非拉丁语言(中文、日语、韩语、泰语、阿拉伯语),而游戏内置字体无法渲染其字形?RuneTranslate 会在导出时把一个后备字体注入 TextMeshPro 字体栈,让译好的文字显示出来,而非缺字形的方块。

已知的局限

  • 仅外部化文本:硬编码进编译过的 C# 代码(Mono 上的 Assembly-CSharp.dll,或 IL2CPP 二进制)里的字符串不翻译。MonoBehaviour 数据字段翻译 —— 在 Mono 和 IL2CPP 两种构建上。
  • IL2CPP MonoBehaviour 读取需要一个可解析的 global-metadata.dat;高度混淆的元数据可能重建不了(尽力而为)。
  • 尽力而为:在分享之前先确认导出的游戏能正确启动和阅读。
  • 图片文字(标志、手绘 UI、CG 说明)不翻译 —— 在机器翻译范围之外。

为什么这比旧办法更容易

手动 Unity 翻译意味着用 UABE 或 AssetStudio 拆包资源、搜寻哪些 TextAssets 和 MonoBehaviour 字段承载真正的文本、手动避开会让游戏崩溃的标识符字符串,然后在不损坏资源表的情况下重新导入。RuneTranslate 把提取、分类(让你不去翻译机器逻辑)、翻译和就地打补丁折叠进点几下鼠标 —— 同时保持编辑器打开,让你掌控措辞。

查看 Unity 引擎页面了解完整功能清单,读 TyranoBuilder 指南看一个基于 HTML 的引擎,或下载 RuneTranslate在一个真实游戏上试一试。

相关阅读
01

如何翻译游戏的 .po 和 .mo 文件(gettext)

gettextpomoenginetutorial2026年8月4日 · 7 分钟
阅读 →
02

如何将 Godot 游戏翻译成英语

godotenginetutorial2026年6月17日 · 6 分钟
阅读 →
03

如何将 Ren'Py 游戏翻译成英语(完整教程)

renpytutorialengine2026年6月9日 · 6 分钟
阅读 →

准备好试用 RuneTranslate 了吗?

免费版即可解锁全部引擎 + 全部翻译服务商。支持者($3/mo)解锁全速翻译。

下载 Windows 版