有人知道引擎代码Sprite的spriteFrame是怎样的流程吗

引擎代码是有编译过的,但是断点和输出都没看到进入spriteFrame函数,输出打印资源请求,也是存在的

修改引擎代码后,是不是没编译成功哦

所以你代码里有赋值操作吗 :joy:光看图不知道你要做啥

费这劲编译引擎干啥 直接hock一下原型拦截setter也一样

有的,你看第三张图,就是引擎代码编译后的输出

代码没赋值,纯场景运行,肯定是有用才会去编译引擎,问题是原代码都进不去,原型拦截也没用吧

你没有动态加载去赋值那咋触发setter 静态的可能是直接操作_私有变量

你直接说你要实现什么,改肯定能改。改源码或者简单功能加一个劫持都可以

预制体或者场景中的Sprite加载设置好的资源不走spriteFrame函数,直接走的赋值_spriteFrame。手动赋值才走的spriteFrame函数。

我的目的想调试场景预制体的节点是如何实现Sprite的spriteFrame的流程

我想知道json文件是如何序列化sprite的SpriteFrame对象,我现在只调试到SpriteFrame的序列化接口

原来如此,直接走的赋值_spriteFrame,那这个要怎么查它的实现,主要是我现在序列化json,解析出来的sprite的spriteFrame是为空的

那你得看更底层的资源加载管线。资源加载有两步,下载解析json。然后再是真实加载资源。所有preload预加载只会解析json。不会加载实际资源

有看的,我现在SpriteFrame序列化是有成功的,但是序列化成sprite的SpriteFrame对象,这个没找到,试过把_spriteFrame变成get/set,好像也不行

Cocos 预制体 会在反序列化的时候解析 建立 spriteFrame 的 uuid 和 Sprite 的依赖关系, 等 spriteFrame加载完后,赋值到Sprite的变量_spriteFrame 中。

那这个有没办法序列化完spriteFrame数据,对应是哪个sprite对象?

Cocos 预制体中每个Sprite 会有对应的uuid的spriteFrame。 你要是你自己创建的json,而不是通过Cocos编辑器生成的,你需要自己建立依赖关系。

:rofl:你还不如直说最开始是想干嘛 哪一步遇到了问题 是想知道spf的创建流程还是啥

,我想知道序列化sprte组件的时候是什么时候赋值spriteFrame上去

engine\cocos2d\core\asset-manager 过一遍资源加载流程的源码就差不多知道了

会生成一个js代码,通过执行这个js代码 返回一个node,赋值不是通过getset 是直接赋值到了私有属性上面,后面都是clone 这个node,好像还做了只有多次实例化的prefab 才会缓存这个node,不然每次执行 生成的js代码