蓝图和C++提供了多种供不同Actor通信和共享信息的方法。本页面概述各种可用的Actor通信方法,以及每种方法的要求和常见用例。
此外,你还可以通过文中链接查看各种Actor通信类型的快速入门指南,获取详细信息。
直接通信
直接Actor(Direct Actor)通信是关卡中各Actor间最常用的通信方法。
这种方法需要你引用目标Actor(target actor),以便当前Actor(working actor)获取目标Actor的信息。采用这类通信时,当前Actor和目标Actor之间是一对一的关系。
使用时机
如果你引用了关卡中的某个Actor,并且需要共享信息或触发该Actor的函数,则可以使用此通信方法。
示例
在Actor上触发事件。
从关卡中的Actor中获取信息。
类型转换
类型转换是一种常用的通信方法,方法是获取Actor的引用,并尝试将其转换为其他类型。如果转换成功,则可以通过直接通信来访问其信息和功能。
此方法要求引用关卡中的Actor,以便使用 Cast 节点来将它转换成特定的类。采用此通信方法时,当前Actor和目标Actor之间是一对一关系。
使用时机
如果你已经引用了某个Actor,并且希望在访问其信息之前检查该Actor是否属于某个类型,请使用此通信方法。
示例
接口
接口会定义一组常用行为或功能,这些行为或功能可以由不同的Actor类实现。此通信方法简化了在不同Actor类上实现同类型函数的过程。
此方法要求每个Actor都实现接口,以便访问它们共有的函数。此外,你还需要拥有Actor的引用,以便通过引用来调用接口函数。采用这种通信方法时,当前Actor和目标Actor之间是一对一关系。
使用时机
当你希望为不同类型的Actor创建通用功能时,请使用此方法。
示例
事件分发器
采用事件分发器时,当某个Actor触发事件后,所有其他监听该事件的Actor都会收到通知。
此方法要求在当前Actor上创建事件分发器(Event Dispatche),并将目标Actor绑定给这些分发器。此通信方法使用一对多关系,其中单个Actor负责触发多个监听Actor的事件分发器。
使用时机
如果想要让单个事件影响多个不同Actor,可以使用此通信方法。
示例
Actor通信参考表
通信类型
|
使用时机
|
要求
|
示例
|
直接通信
|
在与关卡中Actor的特定实例通信时。
|
需要引用关卡中的Actor。
|
在关卡中的特定Actor上触发事件。
|
类型转换
|
希望验证Actor是否属于特定类,以便访问其属性。
|
需要引用关卡中的Actor以类型转换到所需的Actor类。
|
访问属于同一父类的子Actor的特定功能。
|
接口
|
当你需要为不同Actor添加相同功能时。
|
需要引用关卡中的Actor,并且该Actor需要实现接口。
|
为不同类型的Actor添加交互行为。
|
事件分发器
|
通过一个Actor来触发到多个Actor的事件。
|
Actor需要订阅事件,以便对事件作出响应。
|
通知不同类型的Actor:某事件已经触发。
|