引言
大家好,我是灰(微博红薯@天外灰仙儿,CSDN@overpara灰),照例寒暄几句~
今天给大家带来一个使用Godot存在很久的对话插件的教程,名为Dialogue Manager,作者是Nathan Hoad,作者本人也在油管上发布了教程视频,但是是英文版的,并且仅仅展示了一部分功能。那么现在让我来带着大家去全面学习一下这款非常好用的对话插件(教程内容基础部分也是基于作者的视频教程)!当然如果想完全掌握这个插件,还需要去Github上查看文档并阅读源码,本文只列举了常用功能。
本篇不是完全零基础的教程,但是只要你用过一点儿Godot就都可以看懂!如果看起来比较吃力,可以到我主页找一找Godot入门教程或者直接从桌宠教程开始学起!
在正式开始前可以给大家看看效果(UI风格使用的是默认的,在原有的基础上增加了头像功能):
一、准备工作
在跟着教程做之前,还需要准备一下素材(非常感谢我们辉鸦工作室老板做的素材,是迷宫饭的同人图嘿嘿):
1. 人物头像or立绘
在这里我准备了四张头像,分别对应了两个角色每人两张,你可以准备的更少一些或者直接使用Godot自带的那个icon.svg,或者随便在网上找找嘛!不想用头像也可以直接使用立绘,毕竟也有很多游戏是在对话时直接展示立绘的(比如大部分手游),原理是一样的,这里我就用头像了!不管你用头像还是立绘,确保每张图的尺寸是相同的!
2. 角色在游戏内的图
我这里也是准备了两个角色,当然你也可以一个角色自言自语,当然当然你也可以直接用icon.svg,仅仅学习一下功能!
3. 非必要素材
按键提醒贴图(我直接用的文字),以及角色说话时的音效(像sans那样嘚嘚嘚的)、一个背景图片(显得不是那么怪)、一个用于交互的物体(在这里我模仿原作者的演示视频用了苹果树)。
4. 创建一个本次课程用的工程
在这里我用的是Godot4.3,你使用任何主流版本应该都可以(包括3.5),我就起名叫DialogLearningv1了,万一以后有v2呢是吧:
这里我手快了不小心先创建了再截的图……所以说我不是空文件夹。
5. 下载插件
俗话说万事开头难,这难就难在了Godot的服务器不在国内,所以大家需要用特殊手段获取一下。要么大家在引擎内部的AssetLib直接搜索Dialogue Manager直接下载并安装:
要么大家可以去Godot的官网,找到Assets:
在这里搜索Dialogue Manager,你是4.1+的版本就点上面那个,是3.5的版本就点下面那个:
这里我因为用的是4.3版本,所以点上面那个,点进去之后选择Download下载:
如果官网都打不开,那你直接来找我要或者到群文件下载!
6. 安装插件
如果是从引擎中直接下载的插件是可以直接安装的,但是如果你是从外部下载的插件那你应该会获得一个压缩包,解压之后找到里面的addons文件夹:
把这个文件夹整个复制到你的游戏工程根目录下,如图所示就是对嘞:
在菜单栏打开项目设置:
在“插件”这一栏勾选上“启用”:
引擎上方多出来个这个就算成功:
二、创建对话文本
接下来我来带着大家写一些对话,我们首先在文件系统里建一个文件夹,专门用来存放对话的文本,养成文件分类的好习惯哈,这里我起名叫“DialogText”:
然后我们选择Dialogue视图,点击左上角的新建:
大家路径就选择刚刚建立的文件夹,起一个文件名,在这里我就叫“MyDialog”,然后点确定:
这里大家可以看到,插件已经为我们自动生成了一段示例,目前看起来还太过复杂,我们可以都删掉,我来带大家一点点由浅入深地写~
1. Hello World
首先大家可以打最简单的一句话,Hello World!
然后大家可以点击这个播放按钮,进行预览:
可以看到可直接正常显示(按空格或者鼠标左键继续):
2. 角色名
那我们做对话的话,应该不会只有旁白(除非你做史丹利的寓言),那这个时候我们就需要添加角色的名字:
也就是角色名后面跟着冒号,冒号后面跟着空格,冒号一定要是英文的冒号!当输入正确时,角色名会变成蓝色。在这里给大家举几个错误案例:
运行后,可以看到角色名已经和正文不是一个字体了:
3. 选项
如果你想做以对话为核心的游戏,那么选项必不可少,我们来看一下选项如何实现:
可以看到,一个小横杠- 跟着一个空格,再后面的一句话就是选项了,大家可以运行一下看看实际效果(同样的,如果格式正确小横杠会变成蓝色),大家可以用小键盘或者鼠标直接切换选项:
不过因为我们没有在后面设置对话,所以选择完后游戏会直接结束,那我们为了体现出选项的差异性,可以在后面再添加一些对话:
如果想在选项后面增加分支的话,那就在下面一行按Tab键缩进一下,再写入该选项对应的后续对话。也可以在整个选项都结束后,写入通用的后续对话。大家可以在这块多试一试!
4. Title
如果你的剧情自由度很高的话,那么不同的选项分支往往会导致完全不同的剧情,此时再把分支剧情都塞到选项下面的缩进里未免显得太过繁琐了。
我们采取Title的方式来解决这个问题,大家请看,这里我列举作者本人在示例视频中的例子:
相信聪明的大家也可以看出来,=>这个等于号和一个大于号,加一起就像一个箭头一样,指向后面的Title(也就是标题),然后会直接跳转到~波浪线开头的对应标题!
那么很简单,波浪线加空格后面跟着的就是Title,而=>可以跳转到对应的标题。大家如果书写格式正确的话,会显示为紫色的字。
大家也可以在左下角这个地方看到每个标题的名字:
那么大家运行之后会发现一个问题,那就是对话直接从apple_gave开始播放了,这是因为这个插件默认会从第一个标题开始播放,所以我们需要给整个对话开头再加一个标题,一般来说会用start:
当然,如果你的对话文本体量非常大的话,还可以在这里点击任意一个Title,这个时候就会从对应的Title开始运行,非常方便:
大家还会发现一个问题,就是apple_gave这段的对话结束后,会继续播放goodbye这段的对话,这肯定不是我们希望看见的。如果我们想在某个位置直接结束掉对话,可以使用=> END:
这样播放起来就没有问题了!同时大家如果希望播放完Title中的内容还可以返回到当前行,可以使用=><符号跟着空格和Title。
5. 注释
当你的游戏开发周期很长的时候,不仅代码中需要加注释,对话文本中同样需要注释,添加方法如下:
</