UE4 事件委托

(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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值