当组件很多的时候,通过拖拽操作也是件很麻烦的时候,所以想能自动初始化的装饰器auto_property
/**
* 使用方法
* 在不指定node的时候就在自身节点上获取对应类型的组件,
* 指定了node的情况下,就全局查找节点,然后获取组件
**/
@auto_property({type:T,node:'node_name'})
private some_component:T = null
// decorators.ts
export function auto_property(options:{},node:string=null){
return function(target:any, prop_name){
// todo: 自动初始化的工作
return cc._decorator.property(target,prop_name);
}
}
问题就出在原生的 property装饰器上,看了下源代码,如果prop_name没有就是返回装饰器函数,
如果有传值就完成实际的初始化property工作。这样设计估计也是为了扩展性。实际上装饰器完全
值需要返回一个函数就可以,编译的时候自动执行了。
问题来了上面的代码无法完整的初始化属性,无法传入option。
函数签名是这样的
function property (ctorProtoOrOptions, propName, desc)
第一个参数要么是option,要么是构造器…在实现过程中 option是内部变量。
不知道官方的实现意图是啥?
除了复制官方代码到自己的文件中,不知道还有什么解决方案。