cocos creator为什么不能使用构造函数
ccc脚本组件继承cc.Component,但官方禁止使用脚本组件的构造函数。为何?
原因是受到引擎优化策略的影响,场景或预制体在可以使用前已经被加载到缓存甚至已经实例化并放置到对象池,这样可以优化多次使用或多次使用的创建开销。
综上场景或预制体会被提前实例化,在存在优化的情况下会多次调用构造函数,或不调用构造函数(使用对象池)。最终能确认组件被放置到场景只能通过onLoad或start方法。
举例:
当项目有n个场景时分别在脚本的构造函数和onLoad打印;
配置默认打开scene1
scene1:构造函数
scene2:构造函数
…
scene_n:构造函数
(实例化顺序不确定)
scene1:构造函数
onLoad: scene1