【UE4】C++委托
1.委托声明和定义
首先创建GameMode类(AMyGameModeBase)
在AMyGameModeBase.h委托声明和定义
//声明委托
DECLARE_MULTICAST_DELEGATE_OneParam(FMyDelegate, bool);UCLASS()
class TEST_API AMyGameModeBase : public AGameModeBase
{GENERATED_BODY()public://实例化委托FMyDelegate MyDelegate;
};
2.绑定事件
先创建一个Actor类 (AMyLight)
导入头文件 #include "MyGameModeBase.h"
在BeginPlay中,要先得到当前世界的GameMode,再转成自己创建的MyGameMode,然后绑定自己类定义的方法(SwitchLight)
void AMyLight::BeginPlay()
{Super::BeginPlay();UWorld *MyWorld = GetWorld();if (MyWorld){//得到当前世界的GameMode,再转成自己创建的MyGameModeAGameModeBase *GameModeBase = UGameplayStatics::GetGameMode(MyWorld);AMyGameModeBase *MyGameMode = Cast<AMyGameModeBase>(GameModeBase);if (MyGameMode){//绑定函数到委托中MyGameMode->MyDelegate.AddUObject(this, &AMyLight::SwitchLight);}}
}void AMyLight::SwitchLight(bool Value)
{MyLight->SetVisibility(Value);
}
3.执行委托
创建一个Actor(MyTrigger.h)
导入头文件 #include "MyGameModeBase.h"
定义一个方法 DoExecute,DoExecute中通过MyGameMode->MyDelegate.Broadcast(value)进行广播(带一个参数),这样在第二步是绑定了该委托的方法就会执行。
void AMyTrigger::DoExecute(bool value)
{UWorld *MyWorld = GetWorld();if (MyWorld){AGameModeBase *GameModeBase = UGameplayStatics::GetGameMode(MyWorld);AMyGameModeBase *MyGameMode = Cast<AMyGameModeBase>(GameModeBase);if (MyGameMode){//委托广播MyGameMode->MyDelegate.Broadcast(value);}}
}
【UE4】C++委托相关推荐
- UE4代理委托(代理,动态代理,单播,多播)
官方例子https://docs.unrealengine.com/en-us/Programming/UnrealArchitecture/Delegates 创建基于官方第三人称模版C++工程,项 ...
- UE4使用委托实现Actor之间的通信
在场景中获取某一种类型的Actor,并且调用Actor中的成员函数,使用函数:UGameplayStatics::GetAllActorsOfClass TSubclassOf<AActor&g ...
- UE4 C++ 笔记
文章目录 VS 编辑器 运行调试 VSCode VA 蓝图 Actor Component Pawn/Character And Controller AI 光照 数学 Other API UMG F ...
- UE4 委托(代理)简单理解
资料来源于: UE4官方文档 UE4 C++ -- 代理 UE4中的代理(Delegate)使用总结 (UE4 4.20)UE4的委托(Delegate)使用 什么是委托Delegates (网上大部 ...
- UE4 C++:Delegate委托
目录 概念 定义 声明委托 单播委托 声明宏 绑定委托 执行函数 用法示例 不带参数Delegate 带参数Delegate 传递有效负载数据 多播委托 声明宏 绑定多播委托 多播执行 动态委托 声明 ...
- UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)
目录 可能出现问题(在六部分的测试可能无法连接的问题[在末尾加上了,怕有人没看见在这里写一下]) 自定义委托 调整位置 创建更多的委托和回调函数给菜单: 多播和动态多播 代码: 委托变量 代码: 回调 ...
- 【UE4基础】全面理解UE4委托
转载自:全面理解UE4委托 - 可可西 - 博客园UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系 监听者通过将响应函数 ...
- 【UE4】unlua往c++传动态委托参数的方式
功能: 在lua层调用c++接口并传入动态委托参数,在c++中进行广播: lua通过{self,self.callbackFun}的方式对动态委托进行传参: c++: 声明动态委托 接口 Lua用法:
- 【UE4 C++】代理(委托)
这里写目录标题 单播代理 声明代理 常用绑定函数的使用 绑定UObject类型对象的成员函数的代理 绑定基于共享引用的成员函数的代理 绑定原始自定义对象成员函数的代理(执行需要检查IsBound) 绑 ...
最新文章
- 三大运营商齐发力大数据
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
- java音乐播放器脚本之家,分享|3 个开源的音乐播放器:Aqulung、Lollypop 和 GogglesMM...
- 思科数据中心Nexus 3000
- 【Python】ffmpeg模块查询视频、音频信息
- c++ public 函数名相同_C++虚函数、重载、覆盖
- 微信小程序|开发实战篇之十二---order页面
- Android 功耗优化(13)---功耗基础知识
- CentOS 6.5 install redis 3.0.7
- Python索引设置
- Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
- Par.ici法语听写练习A1 -L13
- 苹果开发者账号续费不显示续费按钮的解决方法!
- matlab磁铁模拟,用matlab 模拟环形磁铁的磁场分布
- 基于Java语言在窗体上实现飞机大战小游戏
- 简单实现自定义Android TextView字体
- 前端面试重要问题总结(前端100问小结)(六)
- PostgreSQL 与 MySQL 相比,优势何在?
- 哈希存储、哈希表原理
- 《邪恶八进制技术黑皮书》The Second Edition