我遇到这样的问题,
父类创建了一个event为虚函数,暂时命名为执行攻击动画事件。
我在子类蓝图里,右键直接添加红色的执行攻击动画事件,后面连接了播放攻击动画蓝图。
遇到问题是:单个子类放进地图,能正常执行动画
而多个子类放进地图的时候,不管触发哪个子类,都只会在同一个子类上面执行动画。
请问应该怎么解决,可以告知谢谢。或者截图发我。感谢感谢 这样设置 AI行为树攻击也只有一个NPC会攻击, 使用碰撞测试也只有一个NPC会做出攻击动画,
UE5 父类和子类的事件调用关系
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 在Unreal Engine 5(UE5)中,当你在父类中创建了一个虚函数(例如
执行攻击动画事件
),并在子类蓝图中重写这个事件时,可能会遇到多个子类实例共享同一个事件的问题。这是因为蓝图中的事件默认是共享的,而不是每个实例独有的。解决方法:
1. 使用
Custom Event
而不是重写父类事件在子类蓝图中,你可以创建一个自定义事件(
Custom Event
),而不是直接重写父类的事件。这样可以确保每个子类实例都有自己独立的事件处理逻辑。在父类蓝图中:
- 创建一个虚函数,例如
执行攻击动画事件
。 - 在需要调用的地方调用这个虚函数。
- 创建一个虚函数,例如
在子类蓝图中:
- 右键点击蓝图编辑器,选择
Add Event
->Custom Event
,命名为执行攻击动画事件
。 - 将这个自定义事件连接到播放攻击动画的节点。
- 右键点击蓝图编辑器,选择
2. 使用
Function
而不是Event
你也可以将父类中的事件改为函数(
Function
),然后在子类中重写这个函数。函数在实例化时会自动绑定到每个实例,从而避免共享问题。在父类蓝图中:
- 创建一个函数,例如
执行攻击动画函数
。 - 在需要调用的地方调用这个函数。
- 创建一个函数,例如
在子类蓝图中:
- 右键点击蓝图编辑器,选择
Override Function
,选择父类的执行攻击动画函数
。 - 将这个函数连接到播放攻击动画的节点。
- 右键点击蓝图编辑器,选择
示例步骤:
方法一:使用
Custom Event
父类蓝图:
- 创建一个虚函数
执行攻击动画事件
。 - 在需要调用的地方调用这个事件。
- 创建一个虚函数
子类蓝图:
- 右键点击蓝图编辑器,选择
Add Event
->Custom Event
,命名为执行攻击动画事件
。 - 将这个自定义事件连接到播放攻击动画的节点。
- 右键点击蓝图编辑器,选择
方法二:使用
Function
父类蓝图:
- 创建一个函数
执行攻击动画函数
。 - 在需要调用的地方调用这个函数。
- 创建一个函数
子类蓝图:
- 右键点击蓝图编辑器,选择
Override Function
,选择父类的执行攻击动画函数
。 - 将这个函数连接到播放攻击动画的节点。
- 右键点击蓝图编辑器,选择
截图示例:
父类蓝图 - 创建虚函数
子类蓝图 - 添加自定义事件
子类蓝图 - 重写函数
总结:
通过使用
Custom Event
或Function
,你可以确保每个子类实例都有自己独立的事件处理逻辑,从而避免多个子类实例共享同一个事件的问题。希望这些方法能帮助你解决问题。解决 无用评论 打赏 举报
悬赏问题
- ¥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驱动,如何解决?