m0_73784819 2024-09-16 18:41 采纳率: 69.2%
浏览 70

UE5 父类和子类的事件调用关系

我遇到这样的问题,
父类创建了一个event为虚函数,暂时命名为执行攻击动画事件。
我在子类蓝图里,右键直接添加红色的执行攻击动画事件,后面连接了播放攻击动画蓝图。
遇到问题是:单个子类放进地图,能正常执行动画
而多个子类放进地图的时候,不管触发哪个子类,都只会在同一个子类上面执行动画。
请问应该怎么解决,可以告知谢谢。或者截图发我。感谢感谢 这样设置 AI行为树攻击也只有一个NPC会攻击, 使用碰撞测试也只有一个NPC会做出攻击动画,

img

img

  • 写回答

2条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-09-16 19:08
    关注

    在Unreal Engine 5(UE5)中,当你在父类中创建了一个虚函数(例如执行攻击动画事件),并在子类蓝图中重写这个事件时,可能会遇到多个子类实例共享同一个事件的问题。这是因为蓝图中的事件默认是共享的,而不是每个实例独有的。

    解决方法:

    1. 使用Custom Event而不是重写父类事件

    在子类蓝图中,你可以创建一个自定义事件(Custom Event),而不是直接重写父类的事件。这样可以确保每个子类实例都有自己独立的事件处理逻辑。

    1. 在父类蓝图中

      • 创建一个虚函数,例如执行攻击动画事件
      • 在需要调用的地方调用这个虚函数。
    2. 在子类蓝图中

      • 右键点击蓝图编辑器,选择Add Event -> Custom Event,命名为执行攻击动画事件
      • 将这个自定义事件连接到播放攻击动画的节点。

    2. 使用Function而不是Event

    你也可以将父类中的事件改为函数(Function),然后在子类中重写这个函数。函数在实例化时会自动绑定到每个实例,从而避免共享问题。

    1. 在父类蓝图中

      • 创建一个函数,例如执行攻击动画函数
      • 在需要调用的地方调用这个函数。
    2. 在子类蓝图中

      • 右键点击蓝图编辑器,选择Override Function,选择父类的执行攻击动画函数
      • 将这个函数连接到播放攻击动画的节点。

    示例步骤:

    方法一:使用Custom Event

    1. 父类蓝图

      • 创建一个虚函数执行攻击动画事件
      • 在需要调用的地方调用这个事件。
    2. 子类蓝图

      • 右键点击蓝图编辑器,选择Add Event -> Custom Event,命名为执行攻击动画事件
      • 将这个自定义事件连接到播放攻击动画的节点。

    方法二:使用Function

    1. 父类蓝图

      • 创建一个函数执行攻击动画函数
      • 在需要调用的地方调用这个函数。
    2. 子类蓝图

      • 右键点击蓝图编辑器,选择Override Function,选择父类的执行攻击动画函数
      • 将这个函数连接到播放攻击动画的节点。

    截图示例:

    父类蓝图 - 创建虚函数

    父类蓝图 - 创建虚函数

    子类蓝图 - 添加自定义事件

    子类蓝图 - 添加自定义事件

    子类蓝图 - 重写函数

    子类蓝图 - 重写函数

    总结:

    通过使用Custom EventFunction,你可以确保每个子类实例都有自己独立的事件处理逻辑,从而避免多个子类实例共享同一个事件的问题。希望这些方法能帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 修改了问题 9月16日
  • 创建了问题 9月16日