最近在进行Unity开发的时候,出现了导入了Input System导致UI响应失效的问题。在使用原来的Input的情况下,我们对于Button组件的交互是没有任何问题的,但是当我们切换到Input System后就出现了不管鼠标是悬浮还是点击,都不会触发事件的问题。
如上图所示,Button不管怎么点击都没有反应。
导致这种问题的原因主要有两种:设置原因与组件原因。
1.设置原因
在我们导入了新的Input System之后,Unity的默认设置并不会同步兼容Input System,而是需要我们自己设置!我们从Edit->Project Setting打开项目设置,下拉找到Active Input Handling,在后面默认选项是Input Manager(Old),但我们要选择Both,要Unity同时兼容新老输入系统。如图所示:
2.组件原因
在我们插入了Standalone Input Module组件之后,会看到组件出现红色报错。此时我们点击报错下的Replace with InputSystemUIInputModule,之后等待Unity将此组件替换成Input System UI Input Module组件即可。
上图为组件替换前
上图为组件替换后。
除了以上的组件原因,还可能会有另外一种组件原因,那就是Unity中的Canvas对象没有插入Graphic Raycaster组件,它是图形射线检测组件,用于检测投向Canvas的射线。只有插入了这个组件,画布上的UI才能被射线所检测到。Graphic Raycaster组件如图所示:
最后,保证以上三点都没有问题,我们的UI便可以成功进行正常的交互了。