我们都知道,蓝图的开发效率高,而C++的执行效率高,有时候一些功能C++开发难度及高,而使用蓝图就简单多了,因为蓝图有好多给我们开发者封装好的蓝图节点,我们直接使用就好了,比如官方的时间轴,如果我们用C++写就会相当麻烦,
这篇博客就记录作者在开发过程中使用C++的多播代理调用蓝图的时间轴,从而实现动态缓慢开门关门效果0
效果图:
虽然官方有教程,但是寥寥几个字,相信大家还是会看的一脸懵,
那么就开始看这篇博客吧,
首先声明一下这个门是Actor的,在Actor里我创建了一个OpenDoor的C++组件,并提前定义了开门关门函数,可以接收玩家输入,也可以用触发器,随便能判断开关门条件即可, 这里不做详细教程,我只写多播代理的使用方法,如果连映射输入都不会建议查看官方文档
好教程开始,
1,首先打开OpenDoor()组件在UClass()的头上创建代理
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FTestRequst);
2,创建之后声明两个代理,分别是开门关门
UPROPERTY(BlueprintAssignable)
FTestRequst OnOpenDoorRequest;
UPROPERTY(BlueprintAssignable)
FTestRequst OnCloseDoorRequest;
3,然后在开门关门的函数里使用代理播放广播
void UOpenDoor::OpenDoor()
{
OnOpenDoorRequest.Broadcast();
}
void UOpenDoor::closeDoor()
{
OnCloseDoorRequest.Broadcast();
}
4,编译保存,确定无误
5,打开门Actor的蓝图选中OpenDoor组件,这个时候就可以为我们的广播定义功能了
,
6,之后我们就可以在蓝图中使用时间轴控制我们的门了
7,最后编译保存执行就好了