按钮点不到:我把 _hitTest 之后的几步也跑了一遍

按钮点不到:我把 _hitTest 之后的几步也跑了一遍

前一帖有人贴了针对 Creator 2.x 的 _hitTest 脚本/思路。这个办法有用,也很适合先看当前坐标命中了哪些节点。

我补这条视频,不是想证明脚本没用,而是想把命中之后的几步跑完整:事件最后给了谁、在哪里停住、该改什么、同一坐标和同一交互配方复验后是否恢复,以及 Undo 后现场能不能回到原样。

完整视频:https://www.bilibili.com/video/BV1PnKm6dEKA/

我在 macOS + Cocos Creator 3.8.8 里搭了一个 cc.Button 最小复现。画面由独立的 PurchaseButtonVisual 显示;真正负责输入的 PurchaseButtonHitTarget 挂着 cc.Button,但初始 activeSelf=false

真实按下鼠标后,ModalInputShield 的引擎 hit-test 为 true,并成为最终接收者;它的 BlockInputEvents 被证明在 eventPhase=2(目标阶段)停止传播。同一坐标、同一交互配方在修复前连续复验两次,都是 FAIL。

这条证据没有声称 BlockInputEvents 决定了 sibling 命中顺序,也没有把未继续测试的目标写成 hitTest=false。单凭两个矩形重叠,只会标成“需要确认”,不会说它已经挡住了按钮。

接着我只 Preview 一处变化:

PurchaseButtonHitTarget.activeSelf false → true

Preview 不写项目。Apply 后,在同一坐标、同一交互配方下重放两次,结果都是 PASS,并记录为 FIX_VERIFIED;Undo 后再重放两次,又恢复为 FAIL。保存后的场景也回到运行前同一份 SHA-256。

也别把这个 PASS 看大了:它证明输入节点通过真实 hit-test、成为最终接收者,而且本例唯一的同步 Node.on listener 已返回;它不证明完整 click 手势、serialized Button.clickEvents 及其中的 EventHandler 回调、异步 handler、touch 或 preventSwallow。拿不到证据时,我宁可让工具显示“尚未证明”,也不让它补一个听起来合理的结论。

那把脚本继续写完不就行了?

可以。愿意自己维护命中采集、事件链、改动预览、重放、撤销和报告,这套东西当然能自己做。

Cocos Doctor 卖的不是一段别人写不出来的 API,也不是“只有这个工具会查”,而是把这些步骤放进一条可以反复跑、可以撤销的流程:

采证 → 找原因 → Preview → 由用户决定是否 Apply → 同点复验 → Undo → 恢复验证

它还会在 16:9、19.5:9 + safe area、4:3/tablet 和当前自定义分辨率下做只读检查。四个 profile 各实采 1,000 节点;整次四屏扫描要求项目不变,并在结束时恢复初始视口和临时 CSS。确定问题和“需要确认”会分开。

所以我不想把价格说成“一段脚本值多少钱”。如果你偶尔只想打印一次 hit-test,确实没必要买;如果你经常在输入链、适配和误改上来回花时间,它省的是把几段脚本拼起来、维护起来,再把结果复验一遍的时间。这是我目前能给出的最实在解释。

当前公开商品页是 14 天限时优惠 ¥239,日常价 ¥299,计划于北京时间 2026-08-04 00:00 结束。现在只验证了公开商品价;结算价和优惠结束后恢复 ¥299 尚未验收。

兼容边界也先说清楚:1.0 只完成 macOS + Cocos Creator 3.8.8 + 本机兼容 Google Chrome 的实机验收;Windows、Linux 和其他 Creator 版本不在首发承诺内。

如果愿意拿真实问题继续验证,可以发 Creator 版本、最短复现步骤和脱敏后的节点关系。为了隐私,只需要这些,不需要商业项目、源码、密钥、订单信息或完整日志。能拿到什么证据我就说什么,拿不到的会直接标成不支持。

Cocos Store:
https://store.cocos.com/app/detail/9113

公开文档与支持:
https://github.com/jingyuyan19/cocos-doctor

你们这帮人简直太过分了 :see_no_evil:
image

吓的我赶紧看了一下我的商品,全都是0赞0踩。 :crazy_face: