跳转至

大纲

引用/参考/其他资料

什么是 Dialog

顾名思义就是游戏中一切跟文本有关的东西, 主要包括

  • 对话(人物对话文本)
  • UI(例如开始界面的文本, Mod 选项界面的文本, 暂停界面的文本, 选关界面的文本, 明信片等)

这么多文字必定要存放在某个地方, 不同的语言也要做不同的区分, 那么官方的做法是什么呢

官方的做法是一种语言对应一个特定的.txt, 一段 文本 对应 .txt 中唯一的 Dialog ID, 形如 test_id=文本, 这样游戏就可以根据你的语言使用对应语言文件中的 test_id 来获得对应的 文本, 就像这样

dialog_file_example

知道原理后我们就可以制作自己的文本库了, 一切用到了文本的地方都跟 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
ID1=
    键
    值能换
    行还
    算比
    较方便
ID2=写到一半允许
    突然
换
            行

蔚蓝在解析每一行时蔚蓝会丢弃掉左右出现的空白字符(也就是空格), 所以不必担心有空白字符混进去, 但是换行会最终包括在解析结果内, 因此对于类似于原版 Core Message 这样的实体, 它默认情况只加载一行文本, 如果你在 Core Message 的 Dialog ID 内填入上面的 ID2 , 在游戏内得到的结果很有可能就是写到一半允许

本地化/翻译

至此, 你已经知道怎么为地图保存所需要的文本, 以及实体中所谓的 Dialog ID 究竟是什么了, 那么接下来我们就来讲一下 Dialog ID 最基础的用法之一, 即文本本地化

基本对话

学好了本地化, 这里我们再来讲讲游戏内对话

补充字库

你在写 Dialog 的过程中可能会出现有些字显示不出来的情况, 因为蔚蓝字库里没有, 所以请自己按示例生成字库 (字库生成网站),

或者你可以偷懒依赖 Extended Chinese Font/Chinese Font Pack 使用他们的字库, 虽然可能还是会缺

常用部分

推荐下载 VSCode 并安装 Celeste Dialog Highlighter 插件

常用工具

常用 Dialog 实体/Trigger

MaxHelpingHand/CustomCh3Memo

memo_with_icon

制作无 Icon 版本

素材

memo

然后把官图素材从 Graphics/Atlases/Memo 粘贴到你的 Mod 下, 改个名, 之后在属性栏 Paper Sprite Folder Name 里填上文件夹名字即可(比如我这里的 awa), 还有就是别忘了把另两个素材给清空, 不然还是会有 icon

s1

成品

memo_with_no_icon