首页 > 其他分享 >在虚幻引擎中使用蓝图实现简单的对话

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

时间:2022-12-26 22:55:38浏览次数:45  
标签:蓝图 NPC 引擎 对话 接口 Dialog 虚幻 文本

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

对话功能要求:

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

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

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

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

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

image

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

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

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

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

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

image

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

添加几个相关的变量

image

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

image

每帧需要执行:

image

如果按下E,就执行:

image

事件开始时,添加控件:

image

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


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

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

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

  • 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

标签:蓝图,NPC,引擎,对话,接口,Dialog,虚幻,文本
From: https://www.cnblogs.com/Wu-765279087/p/17007100.html

相关文章

  • 火山引擎虚拟数字人技术与应用
    导读:火山引擎正在打造完善的虚拟数字人技术和应用体系,那么火山引擎是如何定义虚拟数字人的呢?火山引擎2D虚拟数字人和3D数字人采用了怎样先进的技术?火山引擎数字人有哪......
  • 4、搜索引擎语法
    Google搜索site:baidu.com可以查看子域名inurl:.php?id=搜索我们指定的字符是否存在于URL中intext:管理将返回所有在网页正文部分包含关键词的网页intitle:管理将返......
  • 有奖评测 | Serverless 应用引擎 SAE 征集令开启
    写评测拿好礼,Serverless评测局邀您参与SAE征文活动!2022年11月25日-2023年1月25日期间,通过体验Serverless应用引擎SAE产品,发布评测文章并通过审核,百分百可得阿里云......
  • 对不起,你做的 A/B 实验都是错的——火山引擎 DataTester 科普
    DataTester是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的A/B实验类型。DataTester深度耦合推荐、广告、搜索、UI......
  • 元宇宙虚拟引擎开发服务商广州华锐互动怎么样?
    近两年,元宇宙引发全球的高度关注,很多玩家也都开始参与进来。作为虚拟世界的重要组成部分,元宇宙也从一个概念逐渐演变成了一种全新的商业模式以及行业发展趋势。元宇宙具有......
  • 列存引擎 Tianmu 如何实现 Delete?| StoneDB 研发分享 #3
    作者:李红建责编:宇亭在第一期研发分享中,我们解释了,为什么Tinamu作为一款列式存储引擎在初期不支持Delete功能的原因,然后对一些友商列式存储引擎的Delete方案进......
  • MaterializeMySQL引擎
    1、概述MySQL的用户群体很大,为了能够增强数据的实时性,很多解决方案会利用binlog将数据写入到ClickHouse。为了能够监听binlog事件,我们需要用到类似canal这样的第......
  • 图计算引擎分析 ——Gemini
    作者:京东科技王军前言Gemini是目前state-of-art的分布式内存图计算引擎,由清华陈文光团队的朱晓伟博士于2016年发表的分布式静态数据分析引擎。Gemini使用以计算为中......
  • Flask - 蓝图的基本使用
    一、前言参考https://www.cnblogs.com/poloyy/p/15004389.html在前面的例子中,所有的页面处理逻辑都是放在同一个文件中,随着业务代码的增加,将所有代码都放在单个程序文件......
  • Elasticsearch全文检索引擎复习笔记
    Elasticsearch全文检索引擎复习笔记Elasticsearch是一个基于Lucene的搜索引擎。它提供了一个分布式、多租户的全文搜索引擎,能够为应用程序提供实时的、结构化和非结构......