项目场景:
展馆触屏项目,实现体块识别+画画涂色,通过场景跳转切换。
问题描述
两个场景单独运行没有问题,体块识别场景跳转到画画涂色场景后就无法正确实现画画功能了。
原因分析:
因为分别使用了不同的插件实现功能,两个场景的触摸功能发生了冲突,检查代码发现是这行代码造成的问题:
Input.simulateMouseWithTouches = false;
这是一个布尔属性,用于控制是否将触摸事件模拟为鼠标事件。当其设置为
false
意味着触摸事件不会被模拟为鼠标事件,这意味着需要设计专门处理触摸事件的代码,而不能依赖于鼠标事件处理代码。当其设置为true
时,触摸事件会被转换为等效的鼠标事件,这样就可以使用鼠标事件处理代码来处理触摸事件。我的体块识别场景使用了专门处理触摸事件的代码,而画画涂色场景只有鼠标事件。体块识别场景的TouchManager组件修改了 Input.simulateMouseWithTouches = false,并且该组件设置了不可销毁,就跟随场景跳转来到了画画涂色场景,此时画画功能就出现了错误,错误表现为鼠标可以正常画画,触摸屏上画画没有反应。
解决方案:
当跳转到画画涂色场景时,运行:
Input.simulateMouseWithTouches = true;
当跳转到体块识别场景时,运行:
Input.simulateMouseWithTouches = false;
测试检验成功解决问题。