[]为何纹理的加载使用没有引用计数管理起来,单一复用?

如使用image组件或Sprite.loadImage,多个地方显示同一张图片,某个开发者调用image.dispose(),其它地方的image都黑了,Loader.clearRes()方法,注释说是引用计数删除?我不明白用处在哪,只要一清除,所有的该图片都失效,引用计数不是有多处?clearTextureRes方法,可解决该问题,但会导致现有的图片重新渲染闪一下,并不完美。
已邀请:

Aar0n

赞同来自:

销毁Texture使用的图片资源,保留texture壳,如果下次渲染的时候,发现texture使用的图片资源不存在,则会自动恢复
相比clearRes,clearTextureRes只是清理texture里面使用的图片资源,并不销毁texture,再次使用到的时候会自动恢复图片资源
而clearRes会彻底销毁texture,导致不能再使用;clearTextureRes能确保立即销毁图片资源,并且不用担心销毁错误,clearRes则采用引用计数方式销毁
【注意】如果图片本身在自动合集里面(默认图片小于512*512),内存是不能被销毁的,此图片被大图合集管理器管理

Carr

赞同来自:

我们项目也碰到这个问题,多个界面同时使用了一张图,调用clearTextureRes后,会导致其他界面重新渲染闪一下,就是想知道是否有办法能知道图片是否正在被使用

要回复问题请先

商务合作
商务合作