这是我的问题:尽管做了这些:
1) 预加载我所有的纹理图集
2) 将我的地图集存储在单例中,这样它们就不会被 ARC 处理掉
3) 将我所有的动画数组存储在 Singleton 中
仅在第一次将敌人添加到我的场景时,SpriteKit 仍然会出现短暂的“滞后抖动”。纹理绘制一次后,当该纹理添加到场景中时,它不再滞后。最终在屏幕上绘制纹理时,可以看到内存在增加,看起来它们没有被预加载。
我目前正在使用启动时在我的 AppDelegate 中预加载我的所有纹理图集......
SKTextureAtlas.preloadTextureAtlases(primaryAtlas, withCompletionHandler: { () -> Void in
})
primaryAtlas 是存储在 Singleton 中的所有 4 个图集的数组。
让我指出一些我已经尝试过的事情以及我当前的设置是什么。
1)我的动画的帧数组存储在单例中,并从位于不同单例中的 Atlases 中获取它们的图像。他们曾经在同一个单身人士中。
2)我尝试将我所有的纹理存储在一个单例中,这些纹理都是从地图集中加载的。但是目前我的动画被存储了,而我的单个纹理是从图集中获取该纹理的函数。
3)我已经关闭了敌人的所有动画(不要运行SKAction)并且当他们被添加而不是动画时仍然会发生抖动。
我已经尝试解决这个问题很长时间了,老实说似乎没有解决方案。
我在这里找到了一个类似的 StackOverflow 问题,但没有答案:Spritekit: First texture draw slow (preloaded)