这是我的问题:尽管做了这些:
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)
答案 0 :(得分:0)
确保纹理图集用作单例类属性,因为如果在方法范围内创建预加载的纹理图集变量,则在方法返回后将解除分配