脚本中properties里面定义的属性,和场景一个node绑定后,在运行时是怎么关联的?
每次标题无效??
properties: {
txtVersion:cc.Label,
}
例如定义一个文本属性,然后绑定场景里的文本,然后,this.txtVersion 这个是怎么映射到场景里的节点的?
脚本中properties里面定义的属性,和场景一个node绑定后,在运行时是怎么关联的?
每次标题无效??
properties: {
txtVersion:cc.Label,
}
例如定义一个文本属性,然后绑定场景里的文本,然后,this.txtVersion 这个是怎么映射到场景里的节点的?
不是问怎么拖动!!!
每次提出问题,标题都无效!!
是想请教,运行时,怎么绑定的
去看一下场景的.fire文件或者Prefab的.prefab文件就知道了,里面记录了各组件引用的节点和组件的id或者资源的uuid。引擎初始化你的节点和组件的时候根据这些信息去帮你把对应的cc.Label赋值到this.txtVersion上。
每个Node在节点树里面都有编号,绑定就是把编号填在那个变量下,运行时根据那个编号就可以找到那个节点了,(运行时会序列化那个组件,序列化时就将那个节点对象设置给那个变量了),希望回答到你的问题。
加载场景,大概是这样
cc.director.loadScene
self._loadSceneByUuid
cc.AssetLibrary.loadAsset(uuid, function (error, sceneAsset))
Loader.load(item, function (error, asset) {})
最后创建了一个queue,LoadingItems.create,这里是异步的,所以后面找不到了
具体初始化节点和组件是在哪里啊?
回复了上一个朋友,也请你看看
你想实现什么?
在你这个组件的类外面加上这段代码:
// NewClass换成你的类名
Object.defineProperty(NewClass.prototype, "txtVersion", {
get() {
console.trace();
return this._txtVersion;
},
set(v) {
if (v !== null) {
console.trace();
}
this._txtVersion = v;
}
});
就能看到完整的加载过程了。
他是分好几个pipe来处理资源的,大体就是把本地的json文件,序列化为节点树,你看下源码https://github.com/cocos-creator/engine/blob/96bda88193f046d4669a2fb38a5ad968c5d6a9df/cocos2d/core/load-pipeline/loader.js这个文件的loadUuid函数。