gpt4 book ai didi

ios - 如果我稍后使用 SKTextureAtlas,Sprite Kit 是否会多次加载纹理图集?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:46 25 4
gpt4 key购买 nike

这让我思考。

游戏开始,我使用 -spriteNodeWithImageNamed: 方法创建 Sprite 。稍后为了动画,我创建了一个 SKTextureAtlas 对象。有人说它更快,因为 -spriteNodeWithImageNamed: 将首先在您的应用程序包中查找 png,然后再查看图集。

但我不清楚的是:如果我稍后创建一个 SKTextureAtlas,它会知道已经加载的图集图像还是会变得愚蠢并再次加载图像?

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

最佳答案

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

如果 Sprite Kit 在任何图集中找到具有该名称的图像,它将自动加载该图集,以便在使用 spriteNode/initWithImageNamed: 初始化程序时将所述图像用作 Sprite 。这使得在没有 map 集的情况下开始开发以及稍后将文件添加到 map 集变得容易。

我建议从一开始就使用 map 集,因为可能存在细微差别,而且您将能够更真实地评估应用的性能。

是的,Sprite Kit 足够聪明,不会重新加载已经在内存中的资源。它也不会创建同一 map 集的新实例,而是会返回指向已存在的同名 map 集的指针。

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

长话短说:依靠 Sprite Kit 为您做正确的事。

关于ios - 如果我稍后使用 SKTextureAtlas,Sprite Kit 是否会多次加载纹理图集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com