Ios 如果我以后使用SKTextureAtlas,Sprite工具包是否多次加载纹理图集?

Ios 如果我以后使用SKTextureAtlas,Sprite工具包是否多次加载纹理图集?,ios,iphone,sprite-kit,skspritenode,sktextureatlas,Ios,Iphone,Sprite Kit,Skspritenode,Sktextureatlas,这让我思考 游戏开始,我用-spriteNodeWithImageNamed:方法创建精灵。稍后,对于动画,我将创建一个SKTextureAtlas对象。有些人说它更快,因为-spritenodewhitimagenamed:将首先在应用程序包中查找png,然后再查找atlas 但我不清楚的是:如果我稍后创建一个SKTextureAtlas,它会知道已经加载的atlas图像吗?还是会是哑的,只是再次加载图像 如果我在同一个图集的多个节点中创建SKTextureAtlas对象。它会多次加载atla

这让我思考

游戏开始,我用
-spriteNodeWithImageNamed:
方法创建精灵。稍后,对于动画,我将创建一个SKTextureAtlas对象。有些人说它更快,因为
-spritenodewhitimagenamed:
将首先在应用程序包中查找png,然后再查找atlas

但我不清楚的是:如果我稍后创建一个SKTextureAtlas,它会知道已经加载的atlas图像吗?还是会是哑的,只是再次加载图像


如果我在同一个图集的多个节点中创建SKTextureAtlas对象。它会多次加载atlas吗?我必须确保对任何atlas只使用一个SKTextureAtlas实例吗?

确实,
spriteNodeWithImageNamed:
将首先查找捆绑包中的文件。如果无法找到捆绑包文件,它将检查捆绑包中可用的atlas中是否存在具有该名称的图像

如果Sprite Kit在任何atlas中发现具有该名称的图像,它将自动加载该atlas,以便在使用
spriteNode/initWithImageNamed:
初始化器时将所述图像用作Sprite。这使得在没有地图集的情况下开始开发和以后向地图集添加文件变得很容易

我建议从一开始就使用地图集,因为可能存在细微的差异,您将能够更真实地评估应用程序的性能

是的,精灵套件足够聪明,不会重新加载内存中已有的资源。它也不会创建同一个atlas的新实例,而是返回指向已存在的同名atlas的指针

Sprite工具包显然还采用了缓存机制,因此即使删除了对资源文件的最后一个强引用,该文件仍将保留在内存中。然而,我认为还没有人对Sprite工具包最终如何、何时以及以何种顺序从内存中释放缓存实例进行过深入的分析

长话短说:依靠雪碧套件为你做正确的事情