在UE4里使用LGUI插件(四)——LGUIEventDelegate

9 篇文章 0 订阅
6 篇文章 0 订阅

LGUIEventDelegate

在这里插入图片描述

未使用过LGUI插件的同学可先看看之前的博客:在UE4里使用LGUI插件(一)

DrawableEvent从LGUI3.x版本开始改名为LGUIEventDelegate

由于LGUI是基于组件的工作流程的方式,需要在场景里构建大量的Actor层级,所以如果可以不用写代码(或连接蓝图)就能从一个Actor或Component中方便的调用另一个Actor或Component的函数就显得非常方便。那么DrawableEvent就可以做这样的事情。
DrawableEvent类似于Unity中的UnityEvent或者NGUI的EventDelegate,作用就是可以方便的调用另外一个Actor或Component的函数。

下面我们来看一下如何使用DrawableEvent。

示例一:Hello World!
目标:点击按钮调用Actor的函数来打印Hello World
1、新建个空场景,创建WorldSpaceUI
在这里插入图片描述
2、为了方便默认的GameMode交互,我们需要修改一下交互方式。选中WorldSpaceUIRoot,在Details面板中选中LGUIWorldSpaceInteraction组件,修改InteractionSource属性参数为CenterScreen,这样就可以用屏幕中心作为光标了
在这里插入图片描述
3、右键点击WorldSpaceUIRoot后面的倒三角按钮,选择Create UI Element -> Button来创建个按钮。创建按钮是因为按钮里面有个自带的OnClick事件就是DrawableEvent。
在这里插入图片描述
4、选中刚才创建的Button,在Details面板中选中UIButton组件,找到LGUI-Button中的On Click(),点击后面的"+“号添加个事件调用,点击On Click()左边的小三角展开。如上面所说,DrawableEvent可以调用另一个Actor或Component中的函数,所以我们需要指定一些参数,下面创建个Actor和函数来调用。
在这里插入图片描述
5、创建个Actor蓝图取名TestActor,在此蓝图中新建个函数名叫CallFromDrawableEvent,函数的内容就简单的打印个"Hello World!”,然后编译保存
在这里插入图片描述
6、然后把刚才创建的TestActor拖拽到场景中
在这里插入图片描述
7、重新选中Button中的UIButton组件,在TargetActor中选择场景中的TestActor
在这里插入图片描述
8、然后点击Component后面的按钮,在弹出的窗口中选择(ActorSelf)
在这里插入图片描述
9、再点击Function后面的按钮,在弹出的窗口中选择CallFromDrawableEvent函数
在这里插入图片描述
参数指定完成!我们来测试一下。点击Play运行,然后用wsadeq移动到Button处用鼠标左键点击,就可以看见"Hello World!"打印出来了!
在这里插入图片描述
如果需要调用ActorComponent中的某个函数,方法也是一样的,只是在第8步的弹出窗口中选择对应的Component就行。

示例二:自定义参数
示例一是调用的无参数的函数,但实际上大部分情况下我们都希望能传入不同的参数给函数。
目标:用DrawableEvent给函数传字符串参数,打印这些字符串
1、首先需要修改CallFromDrawableEvent,添加字符串作为参数。打开TestActor蓝图,选中CallFromDrawableEvent函数并在右侧的Inputs中添加一个String作为输入参数,并把传入的string打印出来
在这里插入图片描述
2、选中Button上的UIButton组件,点击OnClick()事件下的Function右边的按钮,再次选择CallFromDrawableEvent事件。然后Parameter参数后面就会多了个字符串的输入框,我们在输入框里写入"这是从DrawableEvent事件调用的"。
在这里插入图片描述
再来测试一下,点击Play播放,屏幕上就会打印刚才输入的字符串
在这里插入图片描述

示例三:自定义DrawableEvent事件
前面的示例都是用的UIButton自带的OnClick参数,显然这是不够的,我们需要可以自定义事件
目标:用自定义事件替代OnClick
1、首先创建个自定义的UIButton。新建个蓝图继承自UISelectableComponent并命名为MyUIButton
在这里插入图片描述
2、打开MyUIButton蓝图,点击ClassSettings,在Detals面板的Interfaces中添加LGUIPointerClickInterface
在这里插入图片描述
3、双击蓝图左边的Interfaces/LGUI/OnPointerClick,可以在这里添加OnPointerClick点击事件的内容
在这里插入图片描述
4、重点来了,在Variables中添加新的变量命名为MyOnClick并设为public,类型改为LGUIDrawableEvent,编译,然后在DefaultValue中点击MyOnClick左边的小三角展开,把NativeParameterType属性改为String
在这里插入图片描述
5、在OnPointerClick函数里按照下图连线,在LGUIDrawableEventExecuteString的inParameter输入“这是自定义事件和参数”,编译保存
在这里插入图片描述
6、选中场景中的Button,右键点击右边的倒三角选择DuplicateActors来复制个Button,把复制的Button命名为MyCustomButton,移动MyCustomButton到新的位置防止与Button重叠
在这里插入图片描述
7、选中MyCustomButton,在Details面板中选中UIButton并删除,然后添加MyUIButton组件
在这里插入图片描述
8、选中MyUIButton组件,把Transition改为ColorTint,TransitionActor属性设为MyCustomButton
在这里插入图片描述
9、找到底下的My on Click(String)属性,点击后面的"+"号添加事件,然后把TargetActor设为场景中的TestActor,Component选择(ActorSelf),Function选择CallFromDrawableEvent (NativeParameter)
在这里插入图片描述
再次Play测试,点击MyCustomButton之后屏幕上就会打印 “这是自定义事件和参数”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
思凡软件的 SaVoir Faire(简称 SaF)是一套语音识别和合成引擎,可以在 UE4使用。下面是使用思凡 SaF 引擎的一些步骤: 1. 下载并安装思凡 SaF 引擎。可以在思凡官网上下载并安装相应的版本。 2. 在 UE4 中创建新的项目或打开现有项目。 3. 在项目中创建一个新的 C++ 类,例如 MySaFActor。 4. 在 MySaFActor 类中添加包含 SaF 头文件的 include 语句,例如: ``` #include "Saf.h" ``` 5. 在 MySaFActor 类中添加 SaF 引擎的初始化代码,例如: ``` // 初始化 SaF 引擎 SaF::Initialize(); ``` 6. 在 MySaFActor 类中添加 SaF 引擎的使用代码。例如,以下代码使用 SaF 引擎进行语音识别: ``` // 创建一个 SaF 识别器对象 SaF::Recognize* recognizer = SaF::CreateRecognizer(); // 设置语音输入参数 SaF::RecognizeParams params; params.audioFormat = SaF::AudioFormat::WAV; params.sampleRate = 16000; params.channelCount = 1; // 开始语音识别 SaF::RecognizeResult result; recognizer->RecognizeFromFile("test.wav", params, result); // 输出识别结果 UE_LOG(LogTemp, Warning, TEXT("识别结果:%s"), *FString(result.text)); ``` 7. 在 MySaFActor 类中添加 SaF 引擎的清理代码,例如: ``` // 清理 SaF 引擎 SaF::Finalize(); ``` 请注意,上述代码仅为示例,您需要根据自己的需要进行修改和完善。此外,还需要将 SaF 引擎的库文件添加到项目中,并将其包含在项目构建脚本中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值