From 07fc5c874ccd3b5c5fc53028e8d2d9387a981f2d Mon Sep 17 00:00:00 2001 From: xu_yanfeng Date: Tue, 27 May 2025 17:05:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=92=8CInspect=E6=8F=92=E4=BB=B6=E8=81=94?= =?UTF-8?q?=E5=8A=A8=EF=BC=8C=E6=89=93=E5=BC=80=E9=A2=84=E5=88=B6=E4=BD=93?= =?UTF-8?q?=E5=92=8C=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/types.ts | 1 + src/scripts/inject/everything.ts | 29 +++++++++++++++++++++++++++++ src/scripts/inject/inspector.ts | 20 +++++++++++++++++++- src/views/devtools/hierarchy.vue | 12 ++++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/scripts/inject/everything.ts diff --git a/src/core/types.ts b/src/core/types.ts index 087ba65..1f36793 100644 --- a/src/core/types.ts +++ b/src/core/types.ts @@ -157,6 +157,7 @@ export enum Msg { RequestOpenScript = "request-open-script", RequestBreakOn = "request-break-on", RequestBreakClean = "request-break-clean", + RequestOpenInCocos = "request-open-in-cocos", } export enum BreakOnType { SizeChanged = "size changed", diff --git a/src/scripts/inject/everything.ts b/src/scripts/inject/everything.ts new file mode 100644 index 0000000..a217010 --- /dev/null +++ b/src/scripts/inject/everything.ts @@ -0,0 +1,29 @@ +// 和everything插件交互 +export class Everything { + // 支持多开creator,遍历everything插件的server + + test() { + const port = 2505; + fetch(`http://localhost:${port}/test`) + .then((e) => {}) + .catch((e) => { + console.log(e); + }); + } + open(prefabUUID: string) { + console.log("open prefab:", prefabUUID); + // const url = new URL(window.location.href); + // const port = Number(url.port) - 1000 || 7456; + const port = 2505; // 暂时拿不到编辑器api,暂时写死 + const url = `http://localhost:${port}/open?uuid=${prefabUUID}`; + // console.log("open url:", url); + fetch(url) + .then((e) => { + console.log(e); + }) + .catch((e) => { + console.log(e); + }); + } +} +export const everything = new Everything(); diff --git a/src/scripts/inject/inspector.ts b/src/scripts/inject/inspector.ts index f252424..d79d53f 100644 --- a/src/scripts/inject/inspector.ts +++ b/src/scripts/inject/inspector.ts @@ -3,16 +3,17 @@ import { uniq } from "lodash"; import { BreakOnType, Msg, PluginEvent, RequestBreakOnData, RequestLogData, RequestNodeInfoData, RequestOpenNodeTouchFuntionData, RequestOpenScriptData, RequestSetPropertyData, ResponseGameInfoData, ResponseNodeInfoData, ResponseSetPropertyData, ResponseSupportData, ResponseTreeInfoData } from "../../core/types"; import { CompType, getNodeIcon } from "../../views/devtools/comp"; import { ArrayData, BoolData, ColorData, DataType, EngineData, EnumData, Group, ImageData, Info, InvalidData, NodeInfoData, NumberData, ObjectCircleData, ObjectData, Property, StringData, TreeData, Vec2Data, Vec3Data, Vec4Data } from "../../views/devtools/data"; +import { addBreak, cleanBreak } from "./break"; import { calcCodeHint, getCallbacks } from "./code-hint"; import { getEnumListConfig } from "./enumConfig"; import { InjectEvent } from "./event"; +import { everything } from "./everything"; import { Hint } from "./hint"; import { injectView } from "./inject-view"; import { inspectTarget } from "./inspect-list"; import { getValue, trySetValueWithConfig } from "./setValue"; import { BuildArrayOptions, BuildImageOptions, BuildObjectOptions, BuildVecOptions } from "./types"; import { isHasProperty } from "./util"; -import { addBreak, cleanBreak } from "./break"; declare const cc: any; export class Inspector extends InjectEvent { @@ -257,6 +258,23 @@ export class Inspector extends InjectEvent { console.log(`not adapt event: ${data.type}`); } } + break; + } + case Msg.RequestOpenInCocos: { + const uuid: string = pluginEvent.data; + const node = this.inspectorGameMemoryStorage[uuid]; + if (node && node.isValid) { + console.log(node.uuid, node); + let prefabUUID = ""; + if (node instanceof cc.Scene) { + prefabUUID = node.uuid; + } else { + prefabUUID = node._prefab?.asset?._uuid; + } + if (prefabUUID) { + everything.open(prefabUUID); + } + } } } } diff --git a/src/views/devtools/hierarchy.vue b/src/views/devtools/hierarchy.vue index 6297b49..f61447d 100644 --- a/src/views/devtools/hierarchy.vue +++ b/src/views/devtools/hierarchy.vue @@ -301,6 +301,18 @@ export default defineComponent({ }, onMenu(event: MouseEvent, data: TreeData) { const menus: IUiMenuItem[] = []; + // 现在只有prefab才会有颜色,暂时可以这么判断 + if (data && data.color) { + menus.push({ + name: "open", + icon: "cocos", + callback: (item) => { + ga.fireEventWithParam(GA_EventName.MouseMenu, item.name); + bridge.send(Msg.RequestOpenInCocos, data.id); + }, + }); + menus.push({ type: ccui.menu.MenuType.Separator }); + } if (data) { function doInspect(type: ShowCode, index: number) { bridge.send(Msg.RequestOpenNodeTouchFuntion, { uuid: data.id, code: type, index } as RequestOpenNodeTouchFuntionData);