SpriteKit加载纹理首次延迟即使预加载

时间:2015-12-08 04:42:18

标签: ios swift sprite-kit lag texture-atlas

这是我的问题:尽管做了这些:

1)预加载我的所有纹理图册

2)将我的地图集存储在单身人士中,这样他们就不会被ARC处理掉

3)让我的所有动画数组都存储在Singleton

SpriteKit STILL有一个短暂的抖动"仅在第一次添加敌人时才将敌人添加到我的场景中。纹理被绘制一次后,当纹理添加到场景时,它永远不会再次滞后。当最终在屏幕上绘制纹理时,可以看到内存上升,看起来它们没有被预加载。

我正在使用...

在启动时在我的AppDelegate中预加载我的所有纹理地图集
        SKTextureAtlas.preloadTextureAtlases(primaryAtlas, withCompletionHandler: { () -> Void in

        })

primaryAtlas是我所有4个地图册的数组,存储在单身人士中。

让我指出一些我已经尝试过的事情以及我目前的设置。

1)我的动画的帧数组存储在单身人士中,并从不同单身人士的地图集中获取他们的图像。他们曾经是同一个单身人士。

2)我尝试将所有纹理存储在Singleton中,这些纹理都是从地图集中加载的。但目前我的动画是存储的,而我的单个纹理是从地图集中获取纹理的函数。

3)我已经关闭了敌人的所有动画(不要运行SKAction),并且当他们添加动画并且没有动画时抖动仍然会发生。

我一直试图解决这个问题很长一段时间,老实说这似乎不是一个解决方案。

似乎有一个类似的StackOverflow问题我在这里找不到答案:Spritekit: First texture draw slow (preloaded)

这是我用仪器做的一些分析的图片。 Instruments capture

1 个答案:

答案 0 :(得分:0)

确保纹理图集用作单例类属性,因为如果在方法范围内创建预加载的纹理图集变量,则在方法返回后将解除分配