You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Incisor按钮按下回调未按预期响应问题排查求助

Incisor按钮按下回调未按预期响应问题排查求助

看起来你遇到的问题挺典型的——明明显示的是Go按钮,点击却触发了Stop的回调逻辑。我来帮你一步步排查可能的原因:

1. 先确认回调参数的顺序是否匹配Incisor的规则

很多游戏引擎的回调参数顺序和我们直觉里的不一样,你现在写的onPress(event, camera, action)可能参数位置错了。Incisor的addPressCallback方法,当你传递额外参数(就是你写的["Go"]、["Stop"])时,这些参数应该是排在回调的最后面,而不是第三个位置。

建议你先把回调改成打印所有参数,看看实际拿到的是什么:

onPress(...args) {
    console.log("回调收到的所有参数:", args);
}

如果输出里找不到"Go"或"Stop",说明参数顺序完全错了。比如Incisor的按钮回调通常会把按钮实例本身作为第一个参数,然后是事件对象,最后才是你传递的自定义参数。那正确的回调应该是:

onPress(button, event, action) {
    console.log("当前触发的按钮:", button);
    console.log("动作标识:", action);
    // 剩下的切换逻辑不变
}

2. 检查this的绑定是否正确

有时候引擎的回调绑定机制会出问题,导致onPress里的this不是你期望的ProjectMain实例。你可以在回调里先打印this看看:

onPress(event, camera, action) {
    console.log("this指向:", this);
    // ... 其他代码
}

如果输出的this不是ProjectMain的实例,那this.stopButton和this.goButton可能都是undefined,逻辑自然会出问题。这种情况下,改用箭头函数绑定回调会更稳妥:

// 替换原来的addPressCallback代码
this.goButton.addPressCallback(() => this.onPress("Go"));
this.stopButton.addPressCallback(() => this.onPress("Stop"));

// 然后修改onPress函数
onPress(action) {
    console.log(action); // 现在应该能正确拿到Go/Stop了
    if (action === "Go") {
        this.stopButton.visible = true;
        this.goButton.visible = false;
    } else {
        this.stopButton.visible = false;
        this.goButton.visible = true;
    }
}

3. 验证按钮的可见性和点击区域是否正常

还有一种可能:虽然你设置了this.stopButton.visible = false,但Incisor的visible属性可能只是隐藏了渲染,没有禁用点击事件;或者两个按钮的位置完全重叠,导致你点击的其实是下层的Stop按钮。

你可以先在init方法末尾打印初始可见性:

console.log("初始Go按钮可见:", this.goButton.visible);
console.log("初始Stop按钮可见:", this.stopButton.visible);

点击Go按钮后再打印一次,确认可见性是否正确切换。另外,可以临时给两个按钮设置不同的位置,测试点击是否能触发对应的回调。

4. 检查控制台是否有报错

有时候代码里的隐性错误会导致逻辑异常,比如按钮实例没有正确创建(this.goButton是null),但你没注意到控制台的报错。打开浏览器的开发者工具,看看Console面板有没有红色的错误提示,这往往能快速定位问题。

按上面的步骤排查,应该能找到问题所在。最可能的原因就是参数顺序不对或者this绑定出了问题,先从这两点入手试试吧!

备注:内容来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:14:51