大纲
引用/参考/其他资料
- Dialog 教程 by Saplonily
- Dialog 教程 by 底龙
- B站 Wiki 的 Dialog 教程
- Everest Wiki 的 Dialog 教程
- [Celeste蔚蓝]作图教程第四章-背景, 元数据, 文本教程 by 电箱
- 【Celeste/蔚蓝】自定义文本教程 by 电箱
什么是 Dialog
顾名思义就是游戏中一切跟文本有关的东西, 主要包括
- 对话(人物对话文本)
- UI(例如开始界面的文本, Mod 选项界面的文本, 暂停界面的文本, 选关界面的文本, 明信片等)
这么多文字必定要存放在某个地方, 不同的语言也要做不同的区分, 那么官方的做法是什么呢
官方的做法是一种语言对应一个特定的.txt, 一段 文本 对应 .txt 中唯一的 Dialog ID, 形如 test_id=文本,
这样游戏就可以根据你的语言使用对应语言文件中的 test_id 来获得对应的 文本, 就像这样
知道原理后我们就可以制作自己的文本库了, 一切用到了文本的地方都跟 Dialog ID 息息相关, 它常用于对话 Trigger 和基本翻译工作
创建 Dialog 相关文件
首先在你 Mod 根目录下创建一个 Dialog 文件夹形成类似 Celeste/Mods/你的mod名/Dialog/ 的目录结构
接着你就可以在该目录下创建各种语言的.txt
文件来做不同语言的翻译和添加文本的工作, 但一般加英文 English.txt (必备)跟中文 Simplified Chinese.txt 就够了
注意事项
- Dialog ID 只能由英文、数字组成, 必要情况可以使用下划线, 不要使用空格
- 重复的 Dialog ID 后加载的会覆盖先加载的, 把这个特性当作技巧的话可以用来替换官图文本(同名的 Dialog ID 后加载的会覆盖先加载的, 如 FunnyDialog)
- Dialog ID 与等号之间不可以有空格, 但是等号和右侧文本之间可以有
- 如果你开着游戏新建了文件和文件夹可能导致热更失效, 这也是很多时候 Dialog ID 填对了但是没对话的原因, 建议按住
Ctrl + F5快速重启游戏看看是不是🐖了
Dialog 文本可换行
如果你把文本书写成类似于这样的形式:
1 2 3 4 5 6 7 8 9 10 | |
蔚蓝在解析每一行时蔚蓝会丢弃掉左右出现的空白字符(也就是空格), 所以不必担心有空白字符混进去, 但是换行会最终包括在解析结果内,
因此对于类似于原版 Core Message 这样的实体, 它默认情况只加载一行文本,
如果你在 Core Message 的 Dialog ID 内填入上面的 ID2 , 在游戏内得到的结果很有可能就是写到一半允许
本地化/翻译
至此, 你已经知道怎么为地图保存所需要的文本, 以及实体中所谓的 Dialog ID 究竟是什么了, 那么接下来我们就来讲一下 Dialog ID 最基础的用法之一, 即文本本地化
基本对话
学好了本地化, 这里我们再来讲讲游戏内对话
补充字库
你在写 Dialog 的过程中可能会出现有些字显示不出来的情况, 因为蔚蓝字库里没有, 所以请自己按示例生成字库 (字库生成网站),
或者你可以偷懒依赖 Extended Chinese Font/Chinese Font Pack 使用他们的字库, 虽然可能还是会缺
常用部分
推荐下载 VSCode 并安装 Celeste Dialog Highlighter 插件
- 文本汉化: 图名, 吃心文本, 明信片, remix
- 文字效果: 抖动, 改色, 变速等
- 对话效果: 翻转头像, 对话框置底, 引用等
- 人物表情 (也可以在控制台输入
portraits来查看) - 添加对话 emoji: 把你的 emoji 图片放到
Graphics/Atlases/Gui/emoji目录下(.png格式), 对话对应文本为:你的图片相对路径(不带.png):, 例如:MyCelesteMod/shock: - Lua Cutscene过场动画: 即搭配对话的演出
- 入场明信片, 游戏内明信片
- 替换人物头像
常用工具
- Dialog 图形化界面编辑工具 by Saplonily(群文件, 施工ing)
- 字库生成器
常用 Dialog 实体/Trigger
MaxHelpingHand/CustomCh3Memo
制作无 Icon 版本
素材
然后把官图素材从 Graphics/Atlases/Memo 粘贴到你的 Mod 下, 改个名, 之后在属性栏 Paper Sprite Folder Name 里填上文件夹名字即可(比如我这里的 awa), 还有就是别忘了把另两个素材给清空,
不然还是会有 icon
成品


