10.20UEC++/代理,单播,多播

10.20UEC++/代理,单播,多播_第1张图片

10.20UEC++/代理,单播,多播_第2张图片

 10.20UEC++/代理,单播,多播_第3张图片

构建一个无参无返回值类型的函数(也可以有参有返回值类型)

 10.20UEC++/代理,单播,多播_第4张图片

10.20UEC++/代理,单播,多播_第5张图片

10.20UEC++/代理,单播,多播_第6张图片

相对应的构建一个无参无返回值类型的代理

10.20UEC++/代理,单播,多播_第7张图片


2.多播

实现方式:

先在GameMode中添加带参的多播声明:

然后在类中进行定义成员属性

 

 在一个类中,声明函数

函数定义:

 10.20UEC++/代理,单播,多播_第8张图片

 在GameMode中的SayHello指令框函数中新建两个类对象:对象属性是MyActor(刚刚定义函数的类对象)

 调用AddUObject函数:10.20UEC++/代理,单播,多播_第9张图片

 在EndHello指令框函数中:

10.20UEC++/代理,单播,多播_第10张图片

 结果:

10.20UEC++/代理,单播,多播_第11张图片


3.动态代理 

10.20UEC++/代理,单播,多播_第12张图片

10.20UEC++/代理,单播,多播_第13张图片 

10.20UEC++/代理,单播,多播_第14张图片 10.20UEC++/代理,单播,多播_第15张图片

 首先,在AMyActor上构建了一个带参函数,且用UFunction宏修饰

10.20UEC++/代理,单播,多播_第16张图片 

然后构建了一个动态多播的类型:名称必须是F开头的名字,不然会错误

 然后定义成员变量:

 然后就开始绑定10.20UEC++/代理,单播,多播_第17张图片

使用:

10.20UEC++/代理,单播,多播_第18张图片


 动态多播代理用途:(用于蓝图)

 

动态多播创建完成之后:

在创建动态多播成员时,在前面加上UPROPERTY(BluePrintAssignable)宏

 

创建蓝图类:继承UCpp01_GameMode的类

10.20UEC++/代理,单播,多播_第19张图片 

此时只定义UPROPERTY(BluePrintAssignable)宏,蓝图拿不到,需要再加上

蓝图中搜索:

10.20UEC++/代理,单播,多播_第20张图片 

 在Myactor蓝图类中:10.20UEC++/代理,单播,多播_第21张图片

 此时创建的事件会需要一个函数输入节点(原因是因为在C++中创建了一个Int类型的函数,所以,需要传入一个int类型的函数)

构建int类型函数:

  10.20UEC++/代理,单播,多播_第22张图片10.20UEC++/代理,单播,多播_第23张图片

结果:

 

 所以,C++定义的多播被调用之外,蓝图写的函数也被调用,这就是动态多播的作用,多播却无法实现。        

 

 

 

 

你可能感兴趣的:(ue4,c++,开发语言)