You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

86 lines
10 KiB

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RuntimeBridge = void 0;
// ============================================================================
// yyka-runtime-inspector —— 游戏侧桥接脚本(样例,供用户复制进项目 assets)
//
// 使用方式:
// 1. 将该文件复制到你项目的 assets 目录下(作为普通 TS 模块,不要勾"导入为插件")。
// 2. 在游戏启动处(如 Scene 脚本或入口)调用:
// import { RuntimeBridge } from './RuntimeBridge';
// RuntimeBridge.connect(); // 连接本机编辑器插件,默认端口 33000
// // RuntimeBridge.connect({ host: '192.168.1.100', port: 33000 }); // 局域网真机
// ============================================================================
const cc_1 = require("cc");
const DEFAULT_HOST = '127.0.0.1';
const DEFAULT_PORT = 33000;
class RuntimeBridge {
constructor() {
this.ws = null;
this.timer = null;
this.url = '';
}
/** 连接编辑器中扩展主进程内嵌的 WebSocket 服务。 */
connect(opts) {
var _a, _b;
const host = (_a = opts === null || opts === void 0 ? void 0 : opts.host) !== null && _a !== void 0 ? _a : DEFAULT_HOST;
const port = (_b = opts === null || opts === void 0 ? void 0 : opts.port) !== null && _b !== void 0 ? _b : DEFAULT_PORT;
this.url = `ws://${host}:${port}`;
const ws = new WebSocket(this.url);
this.ws = ws;
ws.onopen = () => {
console.log('[yyka-runtime-inspector] 已连接:', this.url);
this.send({ evt: 'hello', nodeCount: this.countNodes() });
// 定时上报,验证全链路
this.timer = window.setInterval(() => {
var _a, _b;
this.send({
evt: 'ping',
t: Date.now(),
scene: (_b = (_a = cc_1.director.getScene()) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
nodeCount: this.countNodes(),
});
}, 1000);
};
ws.onclose = () => {
if (this.timer) {
window.clearInterval(this.timer);
this.timer = null;
}
console.log('[yyka-runtime-inspector] 连接已断开');
};
ws.onerror = (err) => {
console.error('[yyka-runtime-inspector] websocket 错误:', err);
};
return this;
}
/** 断开连接。 */
disconnect() {
var _a;
(_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
this.ws = null;
}
get connected() {
return !!this.ws && this.ws.readyState === WebSocket.OPEN;
}
/** 发送一条 JSON 消息给插件。 */
send(obj) {
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
this.ws.send(JSON.stringify(obj));
}
}
countNodes() {
const scene = cc_1.director.getScene();
if (!scene) {
return 0;
}
let n = 0;
scene.walk((_node) => {
n++;
});
return n;
}
}
/** 全局单例,注入游戏后直接使用。 */
exports.RuntimeBridge = new RuntimeBridge();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVudGltZUJyaWRnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlJ1bnRpbWVCcmlkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0VBQStFO0FBQy9FLHdEQUF3RDtBQUN4RCxFQUFFO0FBQ0YsUUFBUTtBQUNSLHNEQUFzRDtBQUN0RCxnQ0FBZ0M7QUFDaEMsMERBQTBEO0FBQzFELHdFQUF3RTtBQUN4RSxvRkFBb0Y7QUFDcEYsK0VBQStFO0FBQy9FLDJCQUFvQztBQUVwQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUM7QUFDakMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBRTNCLE1BQU0sYUFBYTtJQUFuQjtRQUNZLE9BQUUsR0FBcUIsSUFBSSxDQUFDO1FBQzVCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBQzVCLFFBQUcsR0FBRyxFQUFFLENBQUM7SUFvRXJCLENBQUM7SUFsRUcsbUNBQW1DO0lBQ25DLE9BQU8sQ0FBQyxJQUF1Qzs7UUFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBSSxtQ0FBSSxZQUFZLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBSSxtQ0FBSSxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFYixFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFELGFBQWE7WUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFOztnQkFDakMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDTixHQUFHLEVBQUUsTUFBTTtvQkFDWCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDYixLQUFLLEVBQUUsTUFBQSxNQUFBLGFBQVEsQ0FBQyxRQUFRLEVBQUUsMENBQUUsSUFBSSxtQ0FBSSxFQUFFO29CQUN0QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtpQkFDL0IsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO1FBRUYsRUFBRSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUM7UUFFRixFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWTtJQUNaLFVBQVU7O1FBQ04sTUFBQSxJQUFJLENBQUMsRUFBRSwwQ0FBRSxLQUFLLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFRCx1QkFBdUI7SUFDZixJQUFJLENBQUMsR0FBWTtRQUNyQixJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVU7UUFDZCxNQUFNLEtBQUssR0FBRyxhQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVcsRUFBRSxFQUFFO1lBQ3ZCLENBQUMsRUFBRSxDQUFDO1FBQ1IsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDSjtBQUVELHNCQUFzQjtBQUNULFFBQUEsYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyB5eWthLXJ1bnRpbWUtaW5zcGVjdG9yIOKAlOKAlCDmuLjmiI/kvqfmoaXmjqXohJrmnKzvvIjmoLfkvovvvIzkvpvnlKjmiLflpI3liLbov5vpobnnm64gYXNzZXRz77yJXG4vL1xuLy8g5L2/55So5pa55byP77yaXG4vLyAgIDEuIOWwhuivpeaWh+S7tuWkjeWItuWIsOS9oOmhueebrueahCBhc3NldHMg55uu5b2V5LiL77yI5L2c5Li65pmu6YCaIFRTIOaooeWdl++8jOS4jeimgeWLvlwi5a+85YWl5Li65o+S5Lu2XCLvvInjgIJcbi8vICAgMi4g5Zyo5ri45oiP5ZCv5Yqo5aSE77yI5aaCIFNjZW5lIOiEmuacrOaIluWFpeWPo++8ieiwg+eUqO+8mlxuLy8gICAgICAgIGltcG9ydCB7IFJ1bnRpbWVCcmlkZ2UgfSBmcm9tICcuL1J1bnRpbWVCcmlkZ2UnO1xuLy8gICAgICAgIFJ1bnRpbWVCcmlkZ2UuY29ubmVjdCgpOyAgICAgICAgICAgICAgIC8vIOi/nuaOpeacrOacuue8lui+keWZqOaPkuS7tu+8jOm7mOiupOerr+WPoyAzMzAwMFxuLy8gICAgICAgIC8vIFJ1bnRpbWVCcmlkZ2UuY29ubmVjdCh7IGhvc3Q6ICcxOTIuMTY4LjEuMTAwJywgcG9ydDogMzMwMDAgfSk7IC8vIOWxgOWfn+e9keecn+aculxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaW1wb3J0IHsgZGlyZWN0b3IsIE5vZGUgfSBmcm9tICdjYyc7XG5cbmNvbnN0IERFRkFVTFRfSE9TVCA9ICcxMjcuMC4wLjEnO1xuY29uc3QgREVGQVVMVF9QT1JUID0gMzMwMDA7XG5cbmNsYXNzIFJ1bnRpbWVCcmlkZ2Uge1xuICAgIHByaXZhdGUgd3M6IFdlYlNvY2tldCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgdGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgdXJsID0gJyc7XG5cbiAgICAvKiog6L+e5o6l57yW6L6R5Zmo5Lit5omp5bGV5Li76L+b56iL5YaF5bWM55qEIFdlYlNvY2tldCDmnI3liqHjgIIgKi9cbiAgICBjb25uZWN0KG9wdHM/OiB7IGhvc3Q/OiBzdHJpbmc7IHBvcnQ/OiBudW1iZXIgfSk6IHRoaXMge1xuICAgICAgICBjb25zdCBob3N0ID0gb3B0cz8uaG9zdCA/PyBERUZBVUxUX0hPU1Q7XG4gICAgICAgIGNvbnN0IHBvcnQgPSBvcHRzPy5wb3J0ID8/IERFRkFVTFRfUE9SVDtcbiAgICAgICAgdGhpcy51cmwgPSBgd3M6Ly8ke2hvc3R9OiR7cG9ydH1gO1xuXG4gICAgICAgIGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldCh0aGlzLnVybCk7XG4gICAgICAgIHRoaXMud3MgPSB3cztcblxuICAgICAgICB3cy5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW3l5a2EtcnVudGltZS1pbnNwZWN0b3JdIOW3sui/nuaOpTonLCB0aGlzLnVybCk7XG4gICAgICAgICAgICB0aGlzLnNlbmQoeyBldnQ6ICdoZWxsbycsIG5vZGVDb3VudDogdGhpcy5jb3VudE5vZGVzKCkgfSk7XG4gICAgICAgICAgICAvLyDlrprml7bkuIrmiqXvvIzpqozor4Hlhajpk77ot69cbiAgICAgICAgICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VuZCh7XG4gICAgICAgICAgICAgICAgICAgIGV2dDogJ3BpbmcnLFxuICAgICAgICAgICAgICAgICAgICB0OiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICBzY2VuZTogZGlyZWN0b3IuZ2V0U2NlbmUoKT8ubmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNvdW50OiB0aGlzLmNvdW50Tm9kZXMoKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9O1xuXG4gICAgICAgIHdzLm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1t5eWthLXJ1bnRpbWUtaW5zcGVjdG9yXSDov57mjqXlt7Lmlq3lvIAnKTtcbiAgICAgICAgfTtcblxuICAgICAgICB3cy5vbmVycm9yID0gKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3l5a2EtcnVudGltZS1pbnNwZWN0b3JdIHdlYnNvY2tldCDplJnor686JywgZXJyKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKiog5pat5byA6L+e5o6l44CCICovXG4gICAgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cz8uY2xvc2UoKTtcbiAgICAgICAgdGhpcy53cyA9IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGNvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy53cyAmJiB0aGlzLndzLnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOO1xuICAgIH1cblxuICAgIC8qKiDlj5HpgIHkuIDmnaEgSlNPTiDmtojmga/nu5nmj5Lku7bjgIIgKi9cbiAgICBwcml2YXRlIHNlbmQob2JqOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLndzICYmIHRoaXMud3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICAgIHRoaXMud3Muc2VuZChKU09OLnN0cmluZ2lmeShvYmopKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY291bnROb2RlcygpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBzY2VuZSA9IGRpcmVjdG9yLmdldFNjZW5lKCk7XG4gICAgICAgIGlmICghc2NlbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuID0gMDtcbiAgICAgICAgc2NlbmUud2FsaygoX25vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICAgIG4rKztcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuO1xuICAgIH1cbn1cblxuLyoqIOWFqOWxgOWNleS+i++8jOazqOWFpea4uOaIj+WQjuebtOaOpeS9v+eUqOOAgiAqL1xuZXhwb3J0IGNvbnN0IFJ1bnRpbWVCcmlkZ2UgPSBuZXcgUnVudGltZUJyaWRnZSgpOyJdfQ==