UE无法触发OnTouchMoved和OnTouchEnded函数

进入项目组以后接的第一个单子, 是关于触控调试功能的, 简单来讲就是根据用户的鼠标或者手指输入显示一个反馈UI, 但该功能无法在移动端上使用的Bug困了我挺久, 主要是因为在移动端上用户的手指触摸屏幕无法触发OnTouchMoved和OnTouchEnded函数.

经过一番排查无果以后求助GamePlay组的导师, 终于三下两下给我搞好了, 原来是UI模式上的问题, 由于我的蓝图是挂载在一个UI BP上的, 当用户手指触摸屏幕时, UI会消耗掉这个input事件, (虽然自己也知道这个原因, 但一直不清楚如何改动, 还以为是引擎Bug……) 解决方法就是:

利用WidgetBlueprintLibrary提供的设置input模式的接口即可, 分为三种模式, 分别是GameOnly, UIOnly以及GameAndUI, 根据我们的需求, 我们需要选择GameOnly的input模式, 即忽略UI的影响, 问题解决, 撒花✿✿ヽ(°▽°)ノ

PS: 选择GameOnly的input模式并不会影响挂载在UI上的Button的click事件触发, 因为在UE中input事件和click事件是有区分的, 对于input模式的设置并不会影响click事件的触发~

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注