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
86 lines
10 KiB
|
2 weeks ago
|
"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+WPoyAzMzAwMFxuLy8gICAgICAgIC8vIFJ1bnRpbWVCcmlkZ2UuY29ubmVjdCh7IGhvc
|