使用 DISPATCHERS 进行 Blueprint 之间的通信


在这里插入图片描述

初始准备

首先 UE5 默认是不提供 静态网格体编辑器也就是 Modeling Mode 的,这里需要从插件中添加 Modeling Tools Editor Mode

进入 Modeling Mode 模式,创建一个正方体

然后利用 PolyGroup Edit 和 PolyCut 操作,保存后得到静态网格体 围栏

然后创建一个 Blueprint Actor 命名为 BP_Door ,进去创建一个 Cube 换一下颜色然后创建一个自定义事件就OK

然后将 BP_Door 拖到围栏中获得一个完整的围栏

接下来复制一下 BP_Character 命名为 BP_Enemy 换一下 Materials 颜色,然后在 BP_Enemy 中实现一个简单的 Death 事件

解下来创建一个 Widget Blueprint 命名为 WB_Nums ,在 Designer 部分中我们需要将后者提升为一个变量

接着我们打开关卡蓝图

在关卡蓝图的 Event BeginPlay 中 添加 WB_Nums,然后创建一个开门事件 Open

接着把 BP_Enemy 拖入到关卡中就完毕了

DISPATCHERS 的创建和绑定

在 BP_Enemy Death 事件中这里我们创建一个 EVENT DISPATCHERS,命名为 OnDeath

然后在 Death 事件的结尾进行调用 Call On Death

这样 DISPATCHERS 就创建完毕了

接下来我们回到 WB_Nums 的 Event Graph 中,实现效果如下,首先获取到所有的 BP_Enemy 然后每个BP_Enemy 使用 Bind Event to On Death 进行绑定,绑定事件实现一个减少的效果

然后回到关卡蓝图,也给关卡添加 bind,并实现一个检测 BP_Enemy 是否为 0 的判断来控制 BP_Door 是否进行打开

最后我们需要对 BP_Character 实现一个碰撞操作,在这里我们使用 Hit Event 实现

到此为止 DISPATCHERS 就已经创建和绑定完毕!

实现效果

实现效果如下

`Dispatchers`是Android Kotlin Coroutines库中的一个重要组件,用于管理异步任务的调度和执行。它提供了一种组织和控制代码何时以及在哪种线程上运行的方式,使得开发者能够更好地处理并发和UI更新。 `Dispatchers`主要有以下几个关键概念: 1. **Main Dispatcher**: 主线程(UI Thread),专门用于UI相关的操作,如更新界面元素、监听用户事件等。这是Android应用程序中用户体验的核心所在。 2. **IO Dispatcher**: 提供了网络请求、数据库访问等耗时操作的后台线程。这些操作不应该阻塞UI线程,所以通常在这里执行。 3. **Worker Dispatcher**: 专门为CPU密集型任务设计,比如图像处理或数据分析。可以在单独的线程池中执行,不会影响UI的响应速度。 4. **Custom Dispatchers**: 开发者可以根据项目需求自定义新的线程池,例如创建一个专门处理动画或者其他特殊场景的任务线程。 使用`Dispatchers`,你可以通过`launch`, `async`或者`delay`等高阶函数来启动异步任务,并明确指定要在哪个`Dispatcher`上执行。`withContext`方法就是基于`Dispatchers`的一个实用工具,用于临时切换到特定的调度上下文。 举个例子: ```kotlin GlobalScope.launch(Dispatchers.IO) { val result = fetchDataFromNetwork() withContext(Dispatchers.Main) { // 更新UI updateUi(result) } } ``` 在这个示例中,`fetchDataFromNetwork`会在IO线程中运行,而`updateUi`则保证在主线程中完成,避免UI阻塞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值