UE4 的委托有很多种类型,简单总结了一下使用场景和使用方法,先上一个小图:
![4a1db40c2a603fdaeb5e52e34468b76b.png](https://i-blog.csdnimg.cn/blog_migrate/fbbc65414a4d6af2b3d65c345b6d6b20.jpeg)
如上图
- 这里将委托分为两大类:单播和多播,区别是可以绑定的方法个数(即该委托可以触发 1 个还是多个事件),区分方式是是否带有关键字 “MULTICAST”或者“EVENT"(可以把Event 看作是特殊的多播,只是只有定义该事件的类才可以调用)。
单播调用方式为 Execute...,多播为BroadCast;
标准单播绑定方法为 Bind...(如 BindStatic,BindRaw,BindUObject等),通过 Bind 后面带的关键字,即可知要绑定的类型是 静态,C++ 原生,Uobject 里的函数等等;
标准多播绑定方式为Add...(如 AddUObject...); - 也可以按是否支持序列化区分,通过关键字 "DYNAMIC"。支持序列化即可被蓝图调用,但是只有 动态多播 可以被蓝图绑定,通过宏 BlueprintAssignable。
动态单播绑定方法为 BindDynamic,动态多播为 AddDynamic。(单播为 Bind...,多播为Add...) - 还可以按是否有返回值区分,通过关键字 "RetVal",注意只有单播类型的才有返回值。
至于使用细节这里不再赘述,(如加 UFUNCTION(),某些委托声明时不带参数名称等)。如果确定了要用哪一种,可以在引擎里搜索一下这个宏,看看引擎是怎么用的。