升级TS后,打开Prefab报getComponent() null错误的一种可能及解决方法

最近被人安利TS的各种好,简直就是IDE重度依赖症患者的福音,于是着手开始项目的升级改造,这里要着重感谢 @toddlxt 大大的无私奉献,再次感谢!

OK,言归正传。
这次改造过程中,我发现只要打开Prefab,控制台中就会报 getComponent: Type must be non-nil 的红色错误

由于错误堆栈中没有指明具体是哪个类出现问题,所以只能一个一个组件试,还好上面的组件不多,很快就找到了原因,某个组件的property装饰器中少掉了type设置:

@property({
default : null,
//type : cc.Sprite, //就是这里,没有的话就会报错
tooltip: ‘用来显示的App icon’,
displayName: ‘icon’
})
icon : cc.Sprite;

添加之后,再打开Prefab,编辑器控制台就不会提示红色的错误信息了。所以,建议在改造TS的过程中,如果之前的properties中定义了default、type等各种属性值的话,可以直接拷贝到新的property装饰器中。

ps:这个错误仅在打开Prefab时才会出现,但是并不影响整个项目的运行,所以,如果你有一个强大的心脏,可以无视各种红色信息,那也可以不用管:14::14:

2赞

目前 default 和 type 还不能自动推导,需要麻烦你们多写一点。技术上之后有可能可以解决,到时候会正式推广装饰器的写法。

1赞

好的,好的,我就等着升级Creator了~~~~:14: