跳转至

Dialog

引用

什么是 Dialog

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

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

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

官方的做法是一种语言对应一个特定的.txt, 一段 文本 对应 .txt 中唯一的id, 叫做, 或者说key, 形如 test_key=文本, 这样游戏就可以根据你的语言使用对应的 test_key 来获得对应的 文本

我们以 Celeste/Content/Dialog/Simplified Chinese.txt 下的 Main Menu 部分为例(找不到可以Ctrl + F搜索), 看看这是不是和你游戏开始界面上显示的一样呢(左边是key, 右边是 对应语言的文本)

Simplified Chinese.txt
1
2
3
4
5
6
7
 # Main Menu
 MENU_DEBUG=       ~调试~
 MENU_BEGIN=       攀登
 MENU_PICO8=       PICO-8
 MENU_OPTIONS=     选项
 MENU_CREDITS=     主创人员
 MENU_EXIT=        退出

编写 Dialog

知道原理后我们就可以添加新的key来生成我们需要的文本, 甚至是替换官图文本(同名的key后加载的的会覆盖先加载的, 如 FunnyDialog), 在使用上我们只需要写好对话, 在地图里放个触发对话的Trigger, 然后填入对应的 key就好了

首先在你Mod根目录下创建一个Dialog文件夹形成类似Celeste/Mods/你的mod名/Dialog/的目录结构

接着你就可以创建各种语言的.txt 文件来做不同语言的翻译和添加文本的工作, 但一般加英文 English.txt (必备)跟中文 Simplified Chinese.txt 就够了

写好对应的文本后在对应Trigger中填入对应id/key即可

常用对话 Trigger

如果要添加自定义文本键名一定要长~, 不然很可能和别人重了出问题, 一般建议是作者名_图名_键名

  • Minitextbox Trigger(trigger)
  • Everest Dialog Cutscene(trigger)
  • Custom NPC(entity)

注意事项

  • =左边不要有空格

常用部分

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

修改自己地图名称和吃心文本

最简单粗暴识别哪些东西是键名的方法就是那一串东西是不是被大括号{}或者中括号[]包着(因为蔚蓝会把无法识别的键用括号包着显示出来), 所以照抄就好了, 例如

localization localization

localization localization

localization localization

Simplified Chinese.txt
1
2
3
Lucky_Tutorial=教程小标题
Lucky_Tutorial_CelesteWikiTutorial=教程主标题
poem_Lucky_Tutorial_CelesteWikiTutorial_A=你好, 我是爱心

自定义人物对话头像

单独修改吃心文本

吃心文本默认用一样的

使用 LuckyHelper/Crystal Heart Dialog Controller 实体为单个心设置文本

工具

FAQ

为什么我文本缺字了

因为蔚蓝字库里没有, 请自己按示例生成(字库生成网站), 或者你直接依赖 Extended Chinese Font/Chinese Font Pack这个Mod, 大概率不会缺字, 但可能还是会缺

常用 Dialog 实体/Trigger

MaxHelpingHand/CustomCh3Memo

memo_with_icon

制作无 Icon 版本

素材

memo

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

s1

成品

memo_with_no_icon