游戏内经常 会有 用对象来表示键值对:
A={
xxx1:‘abc’,
xxx2:‘bcd’
}.
有没有办法类似于 enum的方式,在属性面板中使用呢?(就像 scrollView 里面的direction一样,有下拉框)。
感觉这应该会是一个特别公用的功能
ts:
export enum xxx{
a=1,
b=2
}
@property({
type: cc.Enum(xxx)
})
somexxx: xxx = xxx.a;
1赞
问这个问题,就是不想像你说的这样做的
那还真不知道怎么做
确实是没有
scrollView 有direction吗
你要下拉框不就是跟2楼说的那样子吗
老哥们,看看题目再回啊
对象组件化
编辑器现在只支持值是数字的对象,只能变相地用,不建议
/**
* 对象 to 枚举
*/
function toEnum<T extends Object>(obj: T): { [P in keyof T]: number } {
let keys = Object.keys(obj);
let e: any = {};
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
e[key] = i;
}
return cc.Enum(e);
}
/**
* 枚举值 to 对象值
*/
function enumTo(obj: object, _enum: object, e: number) {
return obj[_enum[e]];
}
/**
* 对象
*/
let a = {
Class: cc.Prefab,
String: "asdasdasd"
};
/**
* 对应枚举
*/
let enum_a = toEnum(a);
/**
* 测试组件
*/
@ccclass
export class Test extends cc.Component {
@property({ type: enum_a })
test: number = enum_a.Class;
onLoad() {
enumTo(a, enum_a, this.test); // cc.Prefab
}
}
嗯,大概明白为啥编译器这样不好弄,算了,还是得自己做个枚举映射了
顺便问下大神,该如何在engin层自定义添加一个component呢?试了好几次,都是报错
