介绍
什么是对话事件?
事件是数据的可视化表示。每当您在时间线中创建一个事件时,您都在修改包含大量键和值的字典。每对将包含在游戏期间执行操作所需的所有信息。什么是自定义事件?
自定义事件由两个主要部分组成:事件块和事件处理脚本。事件块是将在时间线编辑器中显示的场景。它需要继承Dialogic的EventTemplate.tscn场景。
在大多数情况下,您还需要包含所有设置控件的场景。这些将是您的事件块的“内容”。这些场景将不得不扩展EventPart.gd脚本。 这是一个非常简单的示例EventBlock:
通过 6 个步骤制作您的第一个自定义事件
现在让我们创建一个简单的事件,它将一些文本打印到 Godot 的输出面板。创建活动
转到settings page并custom events section点击New按钮。
发生了什么
这个小菜单已经为您创造了许多东西:- ( EventBlockEventBlock.tscn)
- 一个例子EventPart(EventPart_Example.gd/.tscn)
- ( event handling scriptevent_+EVENTID+.gd)
- 用于stylebox您的活动 (Stylebox.tres)
接下来是什么
自动过程已经设置了很多,但它不知道我们事件的目的,所以我们将不得不添加它。| 添加数据
首先我们要打开EventBlock.tscn场景。(不要重命名这个场景!) 选择其根节点并在检查器中查看其导出的变量。 我们将需要添加我们的事件可能拥有的所有数据event_data。如您所见,它已经包含您的事件 ID。这需要在那里,所以不要删除它! 我希望能够设置在我的事件被激活时将打印的文本,因此我将为此添加一个信息槽:
| 事件块内容 (EventParts)
现在您的事件块将是空的,所以如果您愿意,让我们更改它。 EventBlock 的内容被分成EventParts. 这允许一些重用。EventPart 可以在 EventBlock 中的两个位置:Header(始终可见)和 Body(可以隐藏)。EventBlock 不必具有正文或标头 EventPart。__例如,结束分支事件没有。
已经包含了一个简单的示例EventPart(脚本和场景)。你可以随心所欲地改变它。| 加载数据
load_data()您需要设置控制节点的值。当事件添加到时间线编辑器时调用此函数。| 保存对数据的更改
当值发生变化时(通过信号收听)在event_data字典中设置相应的值并调用data_changed(). 这几乎是您需要知道的所有内容。 如果你想找到更多的例子,你可以去res://addons/dialogic/Editor/Events/Parts/查看塑造 Dialogic 默认块的 EventParts。 ### | 使用 EventPart 完成 EventPart(s) 中需要的所有内容后,进入EventBlock场景并将 Inspector 中的header/body变量设置为新场景。| 事件处理程序脚本 (event_yourname_000.gd)
完成后,您EventBlock需要添加事件处理逻辑。| handle_event() 函数
如果你打开脚本你会看到,默认情况下只有一个函数,handle_event()函数。 它带有两个有用的信息:event_data和对dialog_node. 对我来说,我会在 print(event_data[‘print_text’] 那里添加,但当然你可以做更多。 脚本中已经解释了更多内容:继续
用于dialog_node.load_next_event()继续下一个事件。等待
如果您不希望播放器中断您的事件,请设置dialog_node.waiting为true在处理您的事件时。不要忘记将其设置回false.并做了!
太好了,您已经为 Dialogic 创建了第一个自定义事件。确保检查 Emilio 的 Discord 服务器,以防万一有人已经创建了您需要的自定义事件。它们非常容易导入!