diff --git a/src/core/types.ts b/src/core/types.ts
index 7ac263e..2cae6ce 100644
--- a/src/core/types.ts
+++ b/src/core/types.ts
@@ -74,6 +74,12 @@ export type RequestSetPropertyData = Info;
export type ResponseSetPropertyData = Info;
export type RequestLogData = string[];
export type RequestOpenNodeTouchFuntionData = { uuid: string; code: ShowCode; index: number };
+export type RequestOpenScriptData = {
+ /**节点的UUID */
+ uuid: string;
+ /**节点的脚本名字 */
+ script: string;
+};
export type ResponseErrorData = string;
export enum Msg {
None = "None",
@@ -147,6 +153,7 @@ export enum Msg {
* 请求在source面板打开节点的touch函数
*/
RequestOpenNodeTouchFuntion = "request-open-node-touch-funtion",
+ RequestOpenScript = "request-open-script",
}
export class PluginEvent {
diff --git a/src/scripts/inject/inspector.ts b/src/scripts/inject/inspector.ts
index df84750..8a79aa3 100644
--- a/src/scripts/inject/inspector.ts
+++ b/src/scripts/inject/inspector.ts
@@ -1,6 +1,6 @@
// eval 注入脚本的代码,变量尽量使用var,后来发现在import之后,let会自动变为var
import { uniq } from "lodash";
-import { Msg, PluginEvent, RequestLogData, RequestNodeInfoData, RequestOpenNodeTouchFuntionData, RequestSetPropertyData, ResponseGameInfoData, ResponseNodeInfoData, ResponseSetPropertyData, ResponseSupportData, ResponseTreeInfoData } from "../../core/types";
+import { Msg, PluginEvent, 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 { calcCodeHint, getCallbacks } from "./code-hint";
@@ -123,6 +123,25 @@ export class Inspector extends InjectEvent {
}
break;
}
+ case Msg.RequestOpenScript: {
+ const data: RequestOpenScriptData = pluginEvent.data;
+ const node = this.inspectorGameMemoryStorage[data.uuid];
+ if (!node || !node.isValid) {
+ return;
+ }
+ const comps = node._components;
+ if (comps) {
+ for (let i = 0; i < comps.length; i++) {
+ const comp = comps[i];
+ const compName = this.getCompName(comp);
+ if (compName === data.script) {
+ this.target = comp.constructor;
+ break;
+ }
+ }
+ }
+ break;
+ }
case Msg.RequestOpenNodeTouchFuntion: {
const data: RequestOpenNodeTouchFuntionData = pluginEvent.data;
const node = this.inspectorGameMemoryStorage[data.uuid];
diff --git a/src/views/devtools/comp/index.ts b/src/views/devtools/comp/index.ts
index a03bf08..64e1ab7 100644
--- a/src/views/devtools/comp/index.ts
+++ b/src/views/devtools/comp/index.ts
@@ -192,6 +192,11 @@ export function getSimpleProperties(typeName: string): string[] {
"isAlignBottom",
];
config[CompType.Label] = [
+ "color",
+ "isBold",
+ "isItalic",
+ "isUnderline",
+ "spaceX",
"string", //
"horizontalAlign",
"verticalAlign",
diff --git a/src/views/devtools/hierarchy.vue b/src/views/devtools/hierarchy.vue
index 15b0366..a3663d1 100644
--- a/src/views/devtools/hierarchy.vue
+++ b/src/views/devtools/hierarchy.vue
@@ -11,7 +11,7 @@
-
+
@@ -22,7 +22,7 @@ import { HandExpandOptions } from "@xuyanfeng/cc-ui/types/cc-tree/const";
import Mousetrap, { MousetrapInstance } from "mousetrap";
import { storeToRefs } from "pinia";
import { defineComponent, nextTick, onMounted, onUnmounted, ref, toRaw, watch } from "vue";
-import { Msg, PluginEvent, RequestOpenNodeTouchFuntionData, RequestTreeInfoData, RequestUseFrameData, ResponseSetPropertyData, ResponseSupportData } from "../../core/types";
+import { Msg, PluginEvent, RequestOpenNodeTouchFuntionData, RequestOpenScriptData, RequestTreeInfoData, RequestUseFrameData, ResponseSetPropertyData, ResponseSupportData } from "../../core/types";
import { ga } from "../../ga";
import { GA_EventName } from "../../ga/type";
import { ShowCode } from "../../scripts/inject/types";
@@ -34,6 +34,7 @@ import GameInfo from "./game-info.vue";
import Refresh from "./refresh.vue";
import { appStore } from "./store";
import { Timer } from "./timer";
+import { execInspect } from "./util";
const { CCTree, CCFootBar, CCDock, CCDialog, CCInput, CCButton, CCInputNumber, CCSelect, CCButtonGroup, CCCheckBox, CCColor, CCDivider } = ccui.components;
export default defineComponent({
name: "hierarchy",
@@ -272,14 +273,37 @@ export default defineComponent({
}
}
},
+ onClickSubfix(event: MouseEvent, data: TreeData) {
+ function inspectScript(scriptName: string) {
+ bridge.send(Msg.RequestOpenScript, { uuid: data.id, script: scriptName } as RequestOpenScriptData);
+ execInspect();
+ }
+ if (data.subfixIconTip) {
+ const multiple = data.subfixIconTip.split("\n");
+ if (multiple.length >= 2) {
+ const menus: IUiMenuItem[] = [];
+ for (let i = 0; i < multiple.length; i++) {
+ const item = multiple[i];
+ menus.push({
+ name: item,
+ callback: (item) => {
+ console.log(item.name);
+ inspectScript(item.name);
+ },
+ });
+ }
+ ccui.menu.showMenuByMouseEvent(event, menus);
+ } else {
+ inspectScript(multiple[0]);
+ }
+ }
+ },
onMenu(event: MouseEvent, data: TreeData) {
const menus: IUiMenuItem[] = [];
if (data) {
function doInspect(type: ShowCode, index: number) {
bridge.send(Msg.RequestOpenNodeTouchFuntion, { uuid: data.id, code: type, index } as RequestOpenNodeTouchFuntionData);
- setTimeout(() => {
- chrome.devtools.inspectedWindow.eval(`DoInspect()`);
- }, 5);
+ execInspect();
}
function hintCode(type: ShowCode, cbArray: FunctionInfo[], event: MouseEvent) {
if (cbArray.length === 1) {
diff --git a/src/views/devtools/util.ts b/src/views/devtools/util.ts
index 5c51f9e..06eba2c 100644
--- a/src/views/devtools/util.ts
+++ b/src/views/devtools/util.ts
@@ -4,3 +4,8 @@ import { bridge } from "./bridge";
export function checkSupport() {
bridge.send(Msg.RequestSupport, {} as RequestSupportData);
}
+export function execInspect() {
+ setTimeout(() => {
+ chrome.devtools.inspectedWindow.eval(`DoInspect()`);
+ }, 5);
+}