但不继承cc.Component的话传实例就不会生效
不继承cc.Component的情况下传实例不会生效,传类会生效
继承cc.Component,传实例和类都会生效
抱歉没看懂,给个完整点的代码?
大佬帮忙看看
@ccclass('xxxx')
export class xxxx {
aaa: boolean = false;
@property({
type: cc.Enum({}),
visible() {
if (!this.aaa) {
this.aaa = true;
//@ts-ignore //无效的,xxxx没有继承cc.Component所有setClassAttr的第一个参数填this无效,继承cc.Component才能生效
cc.Class.Attr.setClassAttr(this, 'm_iComponent', 'enumList', cc.Enum.getList({ a: 0, b: 1 }));
//@ts-ignore //有效的,无论xxxx是否继承cc.Component,setClassAttr的第一个参数填类都有效
cc.Class.Attr.setClassAttr(xxxx, 'm_iComponent', 'enumList', cc.Enum.getList({ a: 0, b: 1 }));
}
return true;
},
})
bbb: number = -1;
}
最后一个参数,应该是 cc.Enum.getList(cc.Enum({ a: 0, b: 1 })),enumDef 等价于原先 type: 定义的值
OK,我试试看
还是不行
@ccclass('xxxx')
export class xxxx {
aaa: boolean = false;
@property({
type: cc.Enum({}),
visible() {
if (!this.aaa) {
this.aaa = true;
//@ts-ignore //无效的,xxxx没有继承cc.Component所有setClassAttr的第一个参数填this无效,继承cc.Component才能生效
cc.Class.Attr.setClassAttr(this, 'm_iComponent', 'enumList', cc.Enum.getList({ a: 0, b: 1 }));
//@ts-ignore //无效的,xxxx没有继承cc.Component所有setClassAttr的第一个参数填this无效,继承cc.Component才能生效
cc.Class.Attr.setClassAttr(this, 'm_iComponent', 'enumList', cc.Enum.getList(cc.Enum({ a: 0, b: 1 })));
//@ts-ignore //有效的,无论xxxx是否继承cc.Component,setClassAttr的第一个参数填类都有效
cc.Class.Attr.setClassAttr(xxxx, 'm_iComponent', 'enumList', cc.Enum.getList({ a: 0, b: 1 }));
//@ts-ignore //有效的,无论xxxx是否继承cc.Component,setClassAttr的第一个参数填类都有效
cc.Class.Attr.setClassAttr(xxxx, 'm_iComponent', 'enumList', cc.Enum.getList(cc.Enum({ a: 0, b: 1 })));
}
return true;
},
})
bbb: number = -1;
}
在吗大佬。
抱歉今天事情比较多,晚点帮你看一下
我尝试理解了你的代码,你是希望动态修改数组里面的值的枚举类型。
很可惜,目前编辑器并不支持 dump 内嵌(也就是包在数组里)的类型的单独设置。
因为整个数组是做为一个类型整体显示的,所以类型就是取得整个类。
测试代码:
const { ccclass, property } = cc._decorator;
@ccclass('xxxx')
export class xxxx {
@property
aaa: boolean = true;
@property({
type: cc.Enum({}),
visible() {
if (!this.aaa) {
this.aaa = true;
cc.Class.Attr.setClassAttr(this, 'bbb', 'enumList', cc.Enum.getList(cc.Enum({ a: 0, b: 1 })));
}
return true;
},
})
bbb: number = -1;
}
@ccclass
class Test extends cc.Component {
@property({
type: xxxx
})
nestObj: xxxx = null;
@property
changeSelfType: boolean = false;
@property({
type: cc.Enum({}),
visible() {
if (this.changeSelfType) {
this.changeSelfType = false;
cc.Class.Attr.setClassAttr(this, 'selfDynamicType', 'enumList', cc.Enum.getList(cc.Enum({ a: 0, b: 1 })));
}
return true;
},
})
selfDynamicType: number = -1;
}
后续我们会在新版本优化这部分处理。
好吧,谢谢大佬
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。