From 91651243da92398a6792fe11d632ea334f01dd2e Mon Sep 17 00:00:00 2001 From: xu_yanfeng Date: Wed, 29 Jan 2025 19:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B1=9E=E6=80=A7=E4=B8=BA?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=B1=BB=E5=9E=8B=E6=97=B6=E5=8F=98=E4=B8=BA?= =?UTF-8?q?Select=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cc-inspector/src/scripts/inject/inspector.ts | 42 +++++++++++++++++--- cc-inspector/src/views/devtools/data.ts | 5 ++- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/cc-inspector/src/scripts/inject/inspector.ts b/cc-inspector/src/scripts/inject/inspector.ts index cbdc3bd..aeecec0 100644 --- a/cc-inspector/src/scripts/inject/inspector.ts +++ b/cc-inspector/src/scripts/inject/inspector.ts @@ -1,7 +1,7 @@ // eval 注入脚本的代码,变量尽量使用var,后来发现在import之后,let会自动变为var import { uniq } from "lodash"; import { Msg, PluginEvent, RequestLogData, RequestNodeInfoData, RequestSetPropertyData, ResponseGameInfoData, ResponseNodeInfoData, ResponseSetPropertyData, ResponseSupportData, ResponseTreeInfoData } from "../../core/types"; -import { ArrayData, BoolData, ColorData, DataType, EngineData, Group, ImageData, Info, InvalidData, NodeInfoData, NumberData, ObjectCircleData, ObjectData, Property, StringData, TreeData, Vec2Data, Vec3Data, Vec4Data } from "../../views/devtools/data"; +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 { InjectEvent } from "./event"; import { Hint } from "./hint"; import { injectView } from "./inject-view"; @@ -515,6 +515,31 @@ export class Inspector extends InjectEvent { item.tip = ""; return false; } + private getEnum(node: any, key: string): Array<{ name: string; value: number }> | null { + const cfgArray: Array<{ type: any; list: Array<{ key: string; values: () => Array<{ name: string; value: number }> }> }> = [ + { + type: cc.Widget, + list: [ + { + key: "alignMode", + values: () => { + return cc.Widget.AlignMode.__enums__; + }, + }, + ], + }, + ]; + for (let i = 0; i < cfgArray.length; i++) { + const { type, list } = cfgArray[i]; + if (node instanceof type) { + const ret = list.find((item) => item.key === key); + if (ret) { + return ret.values(); + } + } + } + return null; + } private getDisabled(node: any, key: string, item: Info) { const cfgArray: Array<{ type: any; keys: Array<{ key: string[]; disabled: () => boolean }> }> = [ { @@ -603,10 +628,17 @@ export class Inspector extends InjectEvent { return make(info); } case "number": { - const info = new NumberData(propertyValue); - info.step = this.getStep(node, key); - info.disabled = this.getDisabled(node, key.toString(), info); - return make(info); + const enumList = this.getEnum(node, key.toString()); + if (enumList) { + const info = new EnumData(propertyValue); + info.values = enumList; + return make(info); + } else { + const info = new NumberData(propertyValue); + info.step = this.getStep(node, key); + info.disabled = this.getDisabled(node, key.toString(), info); + return make(info); + } } case "string": { const info = new StringData(propertyValue); diff --git a/cc-inspector/src/views/devtools/data.ts b/cc-inspector/src/views/devtools/data.ts index 661242d..2479b0e 100644 --- a/cc-inspector/src/views/devtools/data.ts +++ b/cc-inspector/src/views/devtools/data.ts @@ -493,13 +493,16 @@ export class ImageData extends Info { } export class EnumData extends Info { + public data: string | number = 0; public values: Array<{ name: string; value: any }> = []; - constructor() { + constructor(data: string | number = 0) { super(); this.type = DataType.Enum; + this.data = data; } parse(data: EnumData) { super.parse(data); + this.data = data.data; for (let i = 0; i < data.values.length; i++) { const item = data.values[i]; this.values.push({ name: item.name, value: item.value });