【发布时间】:2016-08-13 16:37:21
【问题描述】:
我正在使用 SpriteKit 构建游戏,最近遇到了问题,我的帧速率从 GameScene 中的 60 持续下降到 50-45,并且从我的 StartScene 打开 GameScene 时有几秒钟的延迟.我尝试了很多不同的事情,我相信我的一个主要问题与动画一个非常频繁产生的 SKSpriteNode 子类有关,当我停止动画它们并使用单个纹理时,帧速率保持在 60。我以前@ 987654321@ 关于将纹理预加载到 SpriteKit 中,并收到了很棒的答案,但我可能还没有完全理解。此时,我将所有 GameScene 纹理都放在一个 Atlas 中,并通过在 GameScene 之前为每个右侧创建常量来加载它们:
//Preload textures of GameScene before running it
let alienTexture1 = SKTextureAtlas(named:"Sprites").textureNamed("alienTexture1")
let alienTexture2 = SKTextureAtlas(named:"Sprites").textureNamed("alienTexture2")
...
class GameScene: SKScene, SKPhysicsContactDelegate {
我知道我应该使用:
SKTextureAtlas(named: "YourTextureAtlasName").preloadWithCompletionHandler {
// Now everything you put into the texture atlas has been loaded in memory
}
预加载纹理,但我不确定括号之间的内容以及何时应该调用像 let alienTexture1 = SKTextureAtlas(named:"Sprites").textureNamed("alienTexture1") 这样的行。然后在我拥有的一些 Alien SKSpriteNode 子类的 init 中调用这些纹理。我不明白某些事情,因为预加载显然无法正常工作。我也不确定切换到GameScene 时如何处理延迟,但我想这也与我在开始时使用所有这些let 语句加载纹理的方式有关。任何建议都会很棒。
我查看了有关此主题的其他问题,并认为这足够具体,不再重复。
【问题讨论】:
标签: ios swift debugging sprite-kit frame-rate