From ef970e9d4c0a918131a33137ea5169a8d8f60eb8 Mon Sep 17 00:00:00 2001 From: xu_yanfeng Date: Sat, 25 Jan 2025 17:44:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=85=B6=E4=BB=96=E7=89=88?= =?UTF-8?q?=E6=9C=AChitTest=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/scripts/inject/hint/adapter.ts | 2 +- .../src/scripts/inject/hint/hint-v3.ts | 19 +++++++++++++++++-- cc-inspector/src/scripts/inject/hint/index.ts | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/cc-inspector/src/scripts/inject/hint/adapter.ts b/cc-inspector/src/scripts/inject/hint/adapter.ts index b635228..e82dd89 100644 --- a/cc-inspector/src/scripts/inject/hint/adapter.ts +++ b/cc-inspector/src/scripts/inject/hint/adapter.ts @@ -65,7 +65,7 @@ export class HintAdapter { let node = new cc.Node("draw-node"); const canvas = cc.find("Canvas"); this.addDraw(scene, canvas, node); - this.draw = node.addComponent(cc.Graphics); + this.draw = node.addComponent(cc.Graphics || cc.GraphicsComponent); } public isDrawValid() { return this.draw && this.draw.isValid; diff --git a/cc-inspector/src/scripts/inject/hint/hint-v3.ts b/cc-inspector/src/scripts/inject/hint/hint-v3.ts index 38a7890..caba68c 100644 --- a/cc-inspector/src/scripts/inject/hint/hint-v3.ts +++ b/cc-inspector/src/scripts/inject/hint/hint-v3.ts @@ -8,8 +8,23 @@ export class HintV3 extends HintAdapter { node.setSiblingIndex(len); } hitTest(node: any, x: number, y: number): boolean { - let b = node._uiProps?.uiTransformComp?.hitTest({ x, y }, 0); - return b; + let hitTest = null; + // hitTest = node._uiProps?.uiTransformComp?.hitTest; + const tr = node.getComponent(cc.UITransformComponent || cc.UITransform); + if (tr) { + if (tr.hitTest) { + hitTest = tr.hitTest.bind(tr); + } else if (tr.isHit) { + // TODO: 3.3.1使用的是这个接口,hitTest有问题,有人反馈再说修复,老版本暂不花费太多精力 + hitTest = tr.isHit.bind(tr); + } + } + if (hitTest) { + let b = hitTest({ x, y }, 0); + return b; + } else { + return false; + } } convertMousePos(event: MouseEvent, canvas: HTMLCanvasElement): { x: number; y: number } { const rect = canvas.getBoundingClientRect(); diff --git a/cc-inspector/src/scripts/inject/hint/index.ts b/cc-inspector/src/scripts/inject/hint/index.ts index 2d487b1..440b700 100644 --- a/cc-inspector/src/scripts/inject/hint/index.ts +++ b/cc-inspector/src/scripts/inject/hint/index.ts @@ -89,7 +89,7 @@ export class Hint { this.cleanSelected(); const nodes = this.getMouseNodes(event, canvas); const pickTop = toRaw(appStore().config.pickTop); - if (nodes.length === 1 || pickTop) { + if (nodes.length === 1 || (pickTop && nodes.length)) { const item = nodes[0]; this.cleanHover(); this.setSelected(item);