代码里通过cc.resources.load动态加载资源,之前的实现方式如下:
cc.resources.load(url, cc.Texture2D, (err, texture) => {
let spriteFrame = new cc.SpriteFrame(texture);
res.texture = texture;
res.texture.addRef();
res.frame = spriteFrame;
res.frame.addRef();
.....
}
一直跑着没啥问题,更新了2.4.6之后,只要发生场景切换就会报错,经过检查是纹理被释放导致。
观察现场,被释放的都是图集纹理,其他小纹理倒是正常(但是这个现象是不是有关联性还不确定)。
改成了下面,直接以SpriteFrame类型进行加载,就没问题了
cc.resources.load(url, cc.SpriteFrame, (err, spriteFrame) => {
res.frame = spriteFrame;
res.frame.addRef();
…
}
之前(2.4.4)没问题,升级到2.4.6开始报错,是资源管理机制有变化?