UE4实现互斥的几个方法

0. 互斥的思路

互斥:对单个指定Actor进行操作,对其他的Actor不进行操作的作用。

实现互斥的思路

  • 对其他的先进行NOT操作,再对指定的进行YES操作。
  • 保存特定的Actor,仅对该Actor进行操作。

1. 控制器类与子类之间实现的互斥

1.1 父类与子类之间

父类包含子类,因此子类可以直接寻找父类,在父类层级对各子类进行互斥。
如在UI中,点击按钮实现对单个按钮(单个功能)的互斥。

在这里插入图片描述通过事件分发器,子类对父类传送信息,可在父类中高层级达到控制。

创建事件分发器
在这里插入图片描述

1.2 控制器类与基类之间

控制器需要控制基类的运行,因此控制器类要包含基类,基类也需要包含控制器类实现相互方法调用。控制器类可以直接将基类存入数组来保存,基类可以在控制器类生成自己时传入得到控制器类。

在这里插入图片描述
需要注意对应基类需要实例化且在生成时暴露。

在这里插入图片描述

可以通过事件分发器在控制器类中对基类进行事件绑定(Bind),再在基类中进行事件调用(Call)。事件分发器最好写在Game Instance中,下图为Game Instance的创建。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 单例实现的互斥

单例在UE中实现的互斥相对比较简单,主要体现在添加唯一利用set进行清除两个方面。比如,在场景中Controller肯定只需要一个,因此可以再添加之后把其它的Controller给删除点。

在这里插入图片描述
在这里插入图片描述

3. 使用游戏世界设置参数

在UE4中存在唯一的游戏模式,各Actor可以通过Game Mode和Projecct Settings的资源进行相互通信来达到互斥。

在这里插入图片描述
在这里插入图片描述

  • HUD Class:主要控制并操作UI的显示与隐藏。
  • Game State Class:主要控制并操作游戏的各状态,如天气特效、后期处理等。
  • Game Instance:主要实现某些需要通信参数的保存和事件分发器,如UI与具体蓝图完成通信对某些参数的保存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值