Unreal Engine蓝图:批量创建UI按钮的点击监听及对象过滤问题
解决UE蓝图批量按钮点击获取名称的问题
最优方案:批量创建按钮时直接绑定点击事件
这是比事后遍历Widget对象高效得多的做法,步骤如下:
- 遍历你的数据数组,每创建一个按钮时:
- 将对应数据的名称赋值给按钮的
Widget Name属性,或者自定义一个存储名称的变量 - 直接调用按钮的
OnClicked绑定事件,在绑定的事件逻辑里直接获取当前按钮的名称(绑定事件时可直接把按钮本身作为参数传递,或者在事件内直接引用该按钮) - 将配置好的按钮添加到Widget容器中
- 将对应数据的名称赋值给按钮的
针对你现有方法的修正:过滤数组保留按钮对象
如果坚持要用“点击时获取Widget内所有对象”的方式,必须过滤数组:
- 使用
Filter Array节点,过滤条件选择「Class Is Child Of」,目标类选择Button(或你的自定义按钮类) - 过滤后的数组仅包含按钮对象,此时可遍历该数组,对每个按钮调用
Is Pressed节点(注意:这种方式是在点击帧检测所有按钮的按压状态,精准度和性能都不如绑定事件的方案)
关键提醒
类型不兼容的问题绝对不能忽略,UE蓝图的类型检查机制很严格,强行连接不兼容的节点会导致运行时错误或逻辑失效。绑定事件的方式是批量UI交互处理的通用方案,逻辑更简洁,性能也更优。
内容的提问来源于stack exchange,提问作者Shadow Edwards
相关产品推荐
相关产品推荐

