最后再到拥有者类中添加一个用于回调的操作函数,其中形参对应在生命组件中定义的那样(注意命名是否重复)
头文件
【UEC 利用代理/委托写一个生命组件】// 代理事件UFUNCTION()void OnHealthChanged(UHealthComponent* OnwerHealthComp, float Health, float HealthDelta,const class UDamageType* DamageType, class AController* InstigatedBy, AActor* DamageCauser);cpp文件
void APCharacter::OnHealthChanged(UHealthComponent* OnwerHealthComp, float Health, float HealthDelta, const class UDamageType* DamageType, class AController* InstigatedBy, AActor* DamageCauser){if (IsDeath) return;UE_LOG(LogTemp, Warning, TEXT("I know I was hurt! "));if (Health <= 0 && !IsDeath){UE_LOG(LogTemp, Warning, TEXT("I am Death! "));IsDeath = true;Death();GetMovementComponent()->StopMovementImmediately();GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);// 分离控制器DetachFromControllerPendingDestroy();// 3秒后执行SetLifeSpan(3.0f);}}void APCharacter::BeginPlay(){Super::BeginPlay();HealthComp->OnHealthChanged.AddDynamic(this, &APCharacter::OnHealthChanged);}最后测试,结果无误
文章插图
经验总结扩展阅读
- 支付宝怎样实现银行卡之间转账(如何利用支付宝进行银行卡转账)
- 8_vue是如何进行数据代理的
- 2021顺丰乡镇代理招标 顺丰快递乡镇代理条件
- 利用inotify和rsync服务实现数据实时同步
- 老西葫芦怎么吃
- 数据科学学习手札145 在Python中利用yarl轻松操作url
- 7_vue的数据代理,双向绑定
- 八字日柱长生的概念如何利用八字合婚配对寻找最佳配偶
- .net core-利用PdfSharpCore和SkiaSharp.QrCode 添加PDF二维码页眉
- .net core -利用 BsonDocumentProjectionDefinition 和Lookup 进行 join 关联 MongoDB 查询