【建议】UITransform 触摸事件监听问题

  • Creator 版本:3.5.2

节点事件文档 内有描述 2D UI 节点上的触摸事件监听依赖于 UITransform 组件,希望通过TS 引导监听组件需要继承 UITransform 或者 补充类似: if (process.env.NODE_ENV === 'development' && !trans) console.error('2D UI 节点上的触摸事件监听依赖于 UITransform 组件 => https://docs.cocos.com/creator/manual/zh/engine/event/event-node.html'); 替代 trans!.cameraPriority

  • 重现方式:在未依赖于 UITransform 组件的 组件内监听鼠标事件,鼠标事件发生时报错;
Uncaught TypeError: Cannot read properties of null (reading 'cameraPriority')
    at PointerEventDispatcher._sortPointerEventProcessorList (pointer-event-dispatcher.ts:194:69)
    at PointerEventDispatcher.dispatchEventMouse (pointer-event-dispatcher.ts:99:14)
    at PointerEventDispatcher.dispatchEvent (pointer-event-dispatcher.ts:70:25)
    at Input._emitEvent (input.ts:256:29)
    at Input._dispatchOrPushEvent (input.ts:314:18)
    at input.ts:282:22
    at Eventified.emit (callbacks-invoker.ts:346:25)
    at HTMLCanvasElement.<anonymous> (mouse-input.ts:118:31)
1赞

发现用 cocos 是真的苦难啊,

    this.node.on(
      Node.EventType.MOUSE_DOWN,
      () => {
        console.log('MOUSE_DOWN');
      },
      this
    );

这个api,解决完上面这个问题后,发现一直没有生效。
最后发现是 要把 预制体的 Node 组件 的 Layer 设置成 UI_2D。
cocos 工程师大佬们都是默认熟悉这些 规则 的嘛。
对我这小白不够友好啊。

已反馈。

节点事件有点依赖于相机,相机的 Visibility 属性跟节点的 Layer 属性,都是用来控制其可见性的。但只有当节点设置的 Layer 属性包含在相机的 Visibility 中时,节点才可以被相机看见。

机制上没问题。。只是怎么让用户知道这个,或者怎么让用户不需要接触这个。 我按着 demo 写的 监听代码,一直没响应,就很懵逼。

旧事重提一下,这个问题在3.6.1里也还是存在,让我这样需要很多layer管理的层级,实在没法使用,如果不解决,看来就只能继续用2.x了,3.x得继续拜拜了