UE4 事件委托

博客介绍了C++中代理的使用方法。先在头文件声明代理,名字以F开头,添加对应参数;接着声明代理变量并暴露给蓝图;在调用处进行事件广播;最后可在蓝图类或C++中进行绑定,绑定函数参数需与声明委托参数一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)先在头文件上面声明一个代理,名字要以F开头

//声明一个事件委托
//第一个参数事件的名称(自己定义)
//后面的参数是事件所需要的参数
//因为有6个参数 所以添加_SixParams
DECLARE_DYNAMIC_MULTICAST_DELEGATE_SixParams(FOnHealthChangeSignature, USHeathComponent*, HealthComponent, float, Health, float, HealthDelta, const class UDamageType*, DamageType, class AController*, InstigatedBy, AActor*, DamageCauser);
 

(2)声明一个代理变量

public:
    //创建事件实例
    //属性暴露给蓝图
    UPROPERTY(BlueprintAssignable, Category = "Events")
    FOnHealthChangeSignature OnHealthChange;

(3)

在要调用的地方写

//事件广播
    OnHealthChange.Broadcast(this,CurrentHealth,Damage,DamageType,InstigatedBy, DamageCauser);


(4)最后要在蓝图类中,选中声明的委托C++类组件,找到委托事件进行绑定

 

或者在c++进行绑定

//.h文件

UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category="Health")
    USHeathComponent* HealthComponent;

    //要绑定的函数参数要和声明委托的参数一致
    UFUNCTION()
    void OnHealthChange(USHeathComponent* HealthComponent, float Health, float HealthDelta, const class UDamageType* DamageType, class AController* InstigatedBy, AActor* DamageCauser);

 

//.cpp

HealthComponent->OnHealthChange.AddDynamic(this, &ASCharacter::OnHealthChange);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值