前言
Unreal不同的Actor蓝图之间如何交互
当我们使用蓝图时,当碰到交互的时候,可能会有点蒙,平时我们写代码,A调用B的函数,非常简单。那么在蓝图中,我们如何调用呢?下面我们来一一讲解
通过函数
在蓝图中新建函数,右侧细节中,可以设置访问修饰符,即public代表公开,private代表私有,protected代表受保护
函数还有几个特殊点
1.函数可以设置局部变量,就和我们的普通函数体一样,内部可以新建局部的变量
2.函数可以设置输入参数,类似我们平时的函数体,public void Test(int a){}
3.函数可以设置输出返回值,比如public int Test(){}
如下所示:ActorB中可以调用A的Function函数
通过事件
事件类似函数,但是又有一定的区别
1.函数有返回值,事件无返回值
2.函数调用会等待函数执行结果,事件调用只是触发但不会等待。
3.函数执行在同一个线程,事件执行在不同线程。
4.函数可以用局部变量,事件没有局部变量。
如下所示,ActorB可以调用ActorA中的事件
通过事件分发器
在ActorA中新建一个事件分发器,当满足一定条件后,调用这个分发器,可以把消息广播给其他Actor。
其他的组件,比如ActorB可以绑定这个事件分发,当A调用分发器是,B会接收到这个事件
其实他就是类似于Unity中的Event事件或者Delegate委托。一般都是自己调用,其他类来绑定。
如下,A中声明分发器,并在点击AnyKey时调用
ActorB中,我们在开始时绑定这个分发器委托
当ActorA点击任意按键时,这里就会相应,并调用Dispather事件,然后我们就可以在Dispatcher事件中来写监听逻辑了。
获取Actor组件
当我们得到一个Actor组件后,就可以调用他的函数,事件,以及分发器
那么我们如何获取Actor呢?
有如下方法
1.直接在编辑器赋值,然后在蓝图中可以直接使用。
2.通过组件查找
通过组件查找类似Unity的GetObjectOfType,但是你要保证你的场景中只有一个此类型的组件。
3.通过Tag值查找
通过Tag值查找某类型,首先必须指定Actor Class和Tag
然后,它的返回值时一个数组,你需要Foreach去便利使用。