在虚幻引擎中使用蓝图实现简单的对话

本文介绍如何在虚幻引擎中实现一个简单的对话系统。该系统可在玩家接近可交互对象时触发对话,并允许根据任务进度更新对话内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在虚幻引擎的小组项目中,我们实现了简单的对话功能。

对话功能要求:

  • 在靠近可对话的物体时,出现提示显示按下E对话
  • 按下E可以进行对话
  • 对话内容可以随着任务流程推进而更改
  • 离开可对话物体时,对话中断;再靠近时对话重新开始

首先我们搭建一个简单的对话功能

在内容侧滑菜单中右键,创建一个控件蓝图。

image

为控件蓝图添加一个画布面板以及两个文本组件。
“TalkText”文本组件默认为空,用于显示对话文本。
"RemindText"文本组件用于显示提示文本。

这两个对话组件都需要在细节面板中勾选“是变量”,以保证能够改变其文本内容。

image

随后在内容侧滑菜单中新建一个蓝图接口,我将其命名为Dialog。

image

蓝图接口用于在蓝图间传递信息。

所有能够对话的物体或人物,都将实现这个蓝图接口中的函数。

这样通过检测人物周围的物体是否实现这个Dialog接口,可以判断这个物体能否进行对话。如果实现了这个接口,调用接口的函数就能实现对话。

Dialog 蓝图接口设置两个函数:Talk函数(开启对话)与DialogEnd函数(用于在人物离开物体附近时结束对话)。

image

首先在角色蓝图中进行更改。

添加几个相关的变量

image

随后创建一个自定义事件:

image

每帧需要执行:

image

如果按下E,就执行:

image

事件开始时,添加控件:

image

这样,角色蓝图的部分就完成了。


新建一个蓝图类,我将其命名为NPC_1,这是可以对话的NPC类。

首先点击类设置,在细节面板里面添加刚才创建的接口Dialog(如下图红线所示)。

image

随后,在NPC_1中添加几个变量。

image

  • Dialog变量是文本数组类型,用于存储当前的对话
  • Dialog_1_0变量是文本数组类型,用于存储这个NPC的第一段对话
  • Dialog_1_1变量是文本数组类型,用于存储这个NPC的第二段对话
  • TalkIndex是int类型,用于存储目前对话在Dialog数组中的数组下标。
  • UseDialog是int类型,用于存储目前使用的是这个NPC的第几段对话
    (即使用的是Dialog_1_0还是Dialog_1_1)

蓝图部分一页放不下,因此我截了两张图:

先实现蓝图接口中的事件Talk

image

image

再实现蓝图接口中的函数DialogEnd

image

这样,就实现了整个对话功能。

如果需要更新NPC的对话,只需要更改NPC的UseDialog变量即可。这样NPC就会说下一段话。

效果如下:

image

image

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值