我这边有一个2.4用的类装饰器,用来对项目中的类进行快速索引。
export function keepClassName(classCtor){
let frameInfo = cc['_RF'].peek();
let scriptName = frameInfo.script;
legacyCC.js.setClassName(scriptName, classCtor);
}
然后就可以通过下述代码,快速的获取类逻辑的构造函数
let constructor = cc.js.getClassByName(skillName);
if (constructor == null){
if (!DECODED_SKILL[skillName]){
console.warn("skillId = " + skillId + " " + skillName + " is null");
}
constructor = cc.js.getClassByName("Skill1000");
}
let inst: SkillBase = new constructor();
return inst
但因为3.x的api完全变了,所以这个装饰器是完全没法用了。想问一下,3.x是怎么去实现类似功能的。
需要额外说明的是,因为这些是纯逻辑类,为了减少大量不必要的开销,所以没有继承cocos的Compnent(这也是为当初2.4的时候,不直接使用class(123)的方式去装饰与快速获取)