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++委托相关推荐

  1. UE4代理委托(代理,动态代理,单播,多播)

    官方例子https://docs.unrealengine.com/en-us/Programming/UnrealArchitecture/Delegates 创建基于官方第三人称模版C++工程,项 ...

  2. UE4使用委托实现Actor之间的通信

    在场景中获取某一种类型的Actor,并且调用Actor中的成员函数,使用函数:UGameplayStatics::GetAllActorsOfClass TSubclassOf<AActor&g ...

  3. UE4 C++ 笔记

    文章目录 VS 编辑器 运行调试 VSCode VA 蓝图 Actor Component Pawn/Character And Controller AI 光照 数学 Other API UMG F ...

  4. UE4 委托(代理)简单理解

    资料来源于: UE4官方文档 UE4 C++ -- 代理 UE4中的代理(Delegate)使用总结 (UE4 4.20)UE4的委托(Delegate)使用 什么是委托Delegates (网上大部 ...

  5. UE4 C++:Delegate委托

    目录 概念 定义 声明委托 单播委托 声明宏 绑定委托 执行函数 用法示例 不带参数Delegate 带参数Delegate 传递有效负载数据 多播委托 声明宏 绑定多播委托 多播执行 动态委托 声明 ...

  6. UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)

    目录 可能出现问题(在六部分的测试可能无法连接的问题[在末尾加上了,怕有人没看见在这里写一下]) 自定义委托 调整位置 创建更多的委托和回调函数给菜单: 多播和动态多播 代码: 委托变量 代码: 回调 ...

  7. 【UE4基础】全面理解UE4委托

    转载自:全面理解UE4委托 - 可可西 - 博客园UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系 监听者通过将响应函数 ...

  8. 【UE4】unlua往c++传动态委托参数的方式

    功能: 在lua层调用c++接口并传入动态委托参数,在c++中进行广播: lua通过{self,self.callbackFun}的方式对动态委托进行传参: c++: 声明动态委托 接口 Lua用法:

  9. 【UE4 C++】代理(委托)

    这里写目录标题 单播代理 声明代理 常用绑定函数的使用 绑定UObject类型对象的成员函数的代理 绑定基于共享引用的成员函数的代理 绑定原始自定义对象成员函数的代理(执行需要检查IsBound) 绑 ...

最新文章

  1. 三大运营商齐发力大数据
  2. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
  3. java音乐播放器脚本之家,分享|3 个开源的音乐播放器:Aqulung、Lollypop 和 GogglesMM...
  4. 思科数据中心Nexus 3000
  5. 【Python】ffmpeg模块查询视频、音频信息
  6. c++ public 函数名相同_C++虚函数、重载、覆盖
  7. 微信小程序|开发实战篇之十二---order页面
  8. Android 功耗优化(13)---功耗基础知识
  9. CentOS 6.5 install redis 3.0.7
  10. Python索引设置
  11. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
  12. Par.ici法语听写练习A1 -L13
  13. 苹果开发者账号续费不显示续费按钮的解决方法!
  14. matlab磁铁模拟,用matlab 模拟环形磁铁的磁场分布
  15. 基于Java语言在窗体上实现飞机大战小游戏
  16. 简单实现自定义Android TextView字体
  17. 前端面试重要问题总结(前端100问小结)(六)
  18. PostgreSQL 与 MySQL 相比,优势何在?
  19. 哈希存储、哈希表原理
  20. 《邪恶八进制技术黑皮书》The Second Edition

热门文章

  1. 帝国CMS调用图集第一张图片的方法
  2. 李岳恒:高可用的以太坊智能合约下的Token经济即将来临
  3. ss 查看网络连接、路由表、接口状态、端口信息
  4. HTML基础总结第一节
  5. FaceBook 快速获取密匙散列
  6. trick用法及其作用大总结
  7. 智能化防杀未知电脑病毒探讨
  8. 扫描仪连续扫描提示有一个问题阻值扫描该文档。请重试,错误的解决办法
  9. 算法性能分析(6):代码的内存消耗
  10. UCHome安装中遇到的问题