UE4使用蓝图事件分发器-优化Tick

UE4中Tick函数是每帧调用的 ,容易影响游戏性能,在蓝图中可以通过事件分发器减少Tick使用。

Actor类构造函数中通过PrimaryActorTick.bCanEverTick可开关Tick。

下面使用事件分发器实现人物移动时,场景中方块旋转。

1.在人物蓝图创建事件分发器并在MoveForward事件后进行派发(Call)

2.创建一个Actor,添加一个Cube模型,先Cast得到玩家引用,然后绑定一个事件(CubeRotation)用于实现方块的旋转。

如果不使用事件分发器,相比就多调用了一个Tick函数。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uE中的事件分发可以帮助用户在程序中管理和处理事件使用事件分发可以将事件从一个对象传递到另一个对象,实现对象之间的解耦。在uE中,事件分发使用了观察者模式,当一个事件发生时,事件分发会通知已注册的监听并执行相应的操作。 使用uE事件分发的方法如下: 1. 创建一个事件分发对象。 2. 注册监听对象,可以是任何实现了监听接口的对象。 3. 在需要触发事件的地方,调用事件分发的方法并传递事件对象作为参数。 4. 事件分发会自动通知已注册的监听对象,并执行相应的操作。 示例代码如下: ```c++ // 定义一个事件类型 class MyEvent { public: int data; }; // 定义一个监听接口 class MyListener { public: virtual void onEvent(MyEvent event) = 0; }; // 定义一个事件分发 class MyEventDispatcher { private: std::vector<MyListener*> listeners; public: void registerListener(MyListener* listener) { listeners.push_back(listener); } void dispatchEvent(MyEvent event) { for (auto listener : listeners) { listener->onEvent(event); } } }; // 实现一个监听 class MyEventListener : public MyListener { public: void onEvent(MyEvent event) override { std::cout << "Event data: " << event.data << std::endl; } }; // 使用事件分发 int main() { MyEventDispatcher dispatcher; MyEventListener listener; dispatcher.registerListener(&listener); MyEvent event; event.data = 123; dispatcher.dispatchEvent(event); return 0; } ``` 在上面的示例代码中,我们创建了一个名为`MyEventDispatcher`的事件分发,并实现了一个名为`MyEventListener`的监听。我们使用`registerListener`方法将`MyEventListener`对象注册到事件分发中,并使用`dispatchEvent`方法触发事件,并将`MyEvent`对象作为参数传递给事件分发。当事件被触发时,事件分发会自动通知已注册的监听对象,并执行相应的操作。在上面的示例代码中,我们实现了`MyEventListener`监听的`onEvent`方法,当事件被触发时,会输出事件的数据到控制台上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值