过程
当主人公靠近NPC时,可按E触发对话,对话使用对话框的形式展示
实现
-
structure
以及DataTable
的初始化
DataTable
主要用于存放对话内容
-
准备
Widget
DialogBox
的蓝图如下
这里增加Delay
是防止点击过快导致对话迅速结束
这里简单说一下上图在干什么:- 每次点击对话框,则读取
DataTable
中的内容,然后展示出来 - 当
row
超出预设范围,则关闭对话框remove
- 每次点击对话框,则读取
-
创建接口方便函数调用
-
碰撞体控件、以及按E触发对话提示设置在NPC中,分别对应
Capsule
和Widget
,其中Widget
不可视 -
NPC蓝图中自定义接口中的三种函数:
Event Enter NPCRadius、Event Interact with NPC、Event Leave NPCRadius
Event Interact with NPC
主要实现对话逻辑
碰撞检测逻辑也简单放一下 -
玩家靠近NPC按下E键触发逻辑
简单解释一下:
get overlapping actor
:获取与指定的class重叠的对象数组,在这里选定的就是与玩家重叠的叫做NPC的对象- 将返回得到的数组连接
Does Implement Interface
来判断在NPC蓝图中是否已经实现了接口函数 - 判断,已实现则执行交互事件,未实现则不发生
运行
靠近NPC
按E触发对话
点击进入下一段对话
最后一段话再次点击对话框消失
总结
整个过程并不困难,只是内容比较多,耐心可以完成。
实现对话框可以了解Widget、Structure、Interface、以及蓝图函数之间的调用
说明
以上内容仅为个人理解,有理解偏差还望指出修正