3.6用主相机的targetTexture创建Node无法响应touch事件

let renderTexture = new RenderTexture();
renderTexture.reset({
name: “Effect_Render_Texture”,
width: screen.windowSize.width,
height: screen.windowSize.height
});
camera.targetTexture = renderTexture;
用该renderTexture创建一个Node节点后,发现touch事件无法响应,相同代码在3.5.2版本中是正常的。经排查发现Creator升级到3.6后,是ui-transform.js中的一处改动导致:!


请大佬协助!

建议用物理或者几何的 raycast 来做 RT 的触摸检测

这里的 hitTest 目前主要还是给 UI 的 2d 触摸检测用的,
3.6 禁用了 RenderTexture 的 2d 触摸检测,因为引擎没办法判断 RT 最终会被渲染到哪,触摸检测的结果是不确定的,如果渲染到物体表面,触摸检测就可能失败了

顺便咨询一下,这个使用场景是怎么样的呢,为什么需要把 node 画到 RT 上,再上屏做触摸检测

而不是直接将 node 画到 屏幕 上呢

这个是做后效处理的,对全场景做shader特效时用到的,切换到3.6后,显示效果没问题,唯独touch事件不可正常响应,现在已通过自定义引擎来解决了,不过还是希望官方能提供标准解决方案,多谢

同,这个我在3.6测试帖就反馈过了,当时panda说考虑会加一个RT的参数控制是否响应事件。所以希望尽快加上这个功能哈,要不我现在只能用3.4.2…

和你用法一样全场景做特效,但是3.5后底层改了,现在只能回滚到3.4.2…

不用回滚到3.4吧,我的问题除了touch事件异常之外,其它都正常,解决touch事件异常的问题即可,如题中截图,去除标红的代码部分即可解决

touch无响应,我还有按钮什么的,按钮也会无响应 :joy:

当时官方给了我一个PR,里面有4个文件需要修改,你这个可能只是改了其中一种情况吧…

我不太清楚你的具体问题,我的问题就是通过上面说的方式解决了

我到时候试试你这个方法,当时给我的pr你也可以参考下哈 fix pointer event when camera.orthoHeight changed by PPpro · Pull Request #10496 · cocos/cocos-engine · GitHub