cocos creator预制体简介
说明,本文章适用于2.4.x版本的介绍,另外部分逻辑例如start或者enable的调用关系在编辑器或者其他运行环境下可能存在差异,建议大家自行去看源码!
预制体(prefab文件)的制作和导出
- 制作
- 在cocos ceator中,通过拖拉一个节点到文件目录上生成一个预制体文件(下文中以prefab简称)。
- prefab相当于之前cocosbuilder中的ccb或者flash中的库元件。
- prefab支持组件化,每个prefab都有一个根节点,根节点上可能会挂载对应的子节点,节点上可以挂载对应的组件
- 所有的组件均继承自cc.component
- 导出
- prefab在保存之后,会生成以json格式和prefab为后缀名的文件,同时对应有meta文件
- prefab在运行时,会由creator转换成压缩形式的json格式,记录其中的数据信息
预制体加载流程
-
prefab加载介绍
cc.loader.loadRes 在2.4.x版本中已经被弃用- cc.resources.load 官方的提供加载接口
-
cc.Prefab
- 在creator中加载完成回来的资源实例对象均为继承自cc.Assets的资源对象
- 使用cc.instantiate创建node对象,此时转化Assets资源对象为Prefab的Node对象
- 使用addChild添加node节点至场景的节点树上
- 至此,一个prefab从解析文件,变成一个node的节点对象
预制体创建中调用关系
- 加载过程中执行了construct的构造方法,从上图可以看出此时的属性引用等关系没有建立完成,所以creator不建议大家重写构造去做一些事情。
- 在激活的时候会调用三个方法:
- preload:不同的组件内部的实现
- onload:可重写
- onenable:可重写
- 在这里加入对象的三个方法到invoke中
- update的处理,在director中,会触发这三个invoke
- onstart:第一次启用的时候触发,下次不会在触发,除非调用ondisable之后又调用onenable
- update:循环
- lastupdate:循环之后