UE4利用委托实现观察者模式

应用场景

当游戏运行过程中,当一个MainActor某个行为的发生会对其他多个object产生影响时可以采用观察者模式,这样可以避免MainActor与其他object发生强耦合关系。如果不采用观察者模式,可能的做法是将object加入到MainActor的行为方法中,如果有多个object那么该方法将显得非常复杂。

观察者模式

使用观察者模式,使得观察者(object)和主题(mainactor)之间解耦,使得主题只需要处理自己的逻辑,然后object的反应也只需要在Object内部实现

实现

目标:UI显示当前Level中敌人个数,然后随着敌人的死亡,UI更新
方法:利用委托

MainActor -- 敌人类

在敌人的类中声明一个委托,然后在敌人死亡时进行广播。开始通知其他object执行逻辑

//.h
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnDeath);

FOnDeath OnDeath;

//.cpp
void AXActor::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpilse, const FHitResult& Hit)
{
	OnDeath.Broadcast();
	Destroy();
}

Object -- UI界面

作者:XTG111

出处:https://www.cnblogs.com/XTG111/p/18360368

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   XTG111  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示