m0_73784819 2024-09-16 18:41 采纳率: 66.7%
浏览 7

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

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

img

img

  • 写回答

1条回答 默认 最新

  • 码踏云端 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日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?