如图,在项目中,经常有这种情况,spriteframe被直接sprite引用,这个sprite所在的prefab是实例化成多个的,而且spriteframe会被设定成多种。比如上面我的spriteframe就会设定为金币和钻石等等。
所以我使用了
bundleLoadDir('texture-1', `style${id}`, SpriteFrame, onProgress)
api把spriteframe按照名字缓存。
然后再实例化它们的时候使用:
this.needSprite.spriteFrame = bam.spriteFrames['iCoin'];
然而在运行的时候会出现下面的状况:
第一次实例化这个prefab没问题,甚至第一次在同一时间实例化多个都没有问题,然而destroy这些实例化的个体,再次实例化,则报错。(在某种清空下一定报错,但有时候不会)
当你把prefab里面的sprite本身所引用的spriteframe清空后保存该prefab,则一切正常。
所以目前我所采用的方式就是在需要代码动态加载的sprite上面保持清空的spriteframe属性。只不过每次在编辑这个prefab的时候看不到一个默认效果比较难受。
是否是我的 使用方式不对?
我之前有一种使用方式是用一个空节点,用component里面的property引用需要的spriteframe。在需要的时候去拿这个引用,这样一直都是没有问题的。只是觉得用起来比较别扭。
最后还是采用了这种古朴的方式:
就这么引用着最稳。



