Sprite Kit 加载速度慢

Posted

技术标签:

【中文标题】Sprite Kit 加载速度慢【英文标题】:Sprite Kit slow loading time 【发布时间】:2014-04-01 02:22:49 【问题描述】:

我目前对我制作的游戏有疑问,我想问一下是否有解决方案。基本上,我的游戏可以完美地加载到主菜单,与任何其他应用程序一样快,没有任何问题,但是当我按下播放按钮时,它会将您带到 MainGameScene,大约需要 3 - 4 秒才能出现该场​​景。它仅在您第一次按下播放按钮时发生。因此,如果您死了,请返回主菜单并再次点击播放,它会立即加载。所以我的问题是,为什么加载 MainGameScene 需要几秒钟?编码时我错过了什么吗?不是预载吗? -(void)loadTextures

我刚刚尝试过,但场景不会从加载屏幕过渡到主菜单场景。有什么想法吗?

NSMutableArray *imageArray = [[NSMutableArray alloc] initWithObjects:@"obstacle.png","background.png","Ghost.png", nil];
[SKTexture preloadTextures:imageArray withCompletionHandler:^
 
     SKTransition *reveal = [SKTransition fadeWithDuration:0.75];
     MGLCreateMainMenuScene *scene = [[MGLCreateMainMenuScene alloc] initWithSize:self.view.bounds.size];
     scene.scaleMode = SKSceneScaleModeAspectFill;
     [self.view presentScene:scene transition:reveal];
 ];

【问题讨论】:

你的游戏第一次加载时,一切都是第一次初始化。在随后的尝试中,这些资产在您的记忆中很容易获得,因此这些资产不需要时间来加载。我建议你在游戏加载时安装一个带有活动指示器的加载器。 另外,你是如何在游戏中预加载资源的? 99% 的几率纹理加载占加载时间的 99%。如果您还没有使用纹理图集,可以使用纹理图集来加快速度。 @LearnCocos2D,我有一个空的屏幕和一个空的 skscene,它的加载大约 2-3 秒,有一些滞后。没有精灵,没有背景——什么都没有。为什么? 是从您启动应用程序开始计算的吗?那是正常的。此外,场景是否为空也没关系,如果您(预)加载纹理,这将需要一些时间。还可以尝试使用没有附加调试器的发布版本来衡量这一点。一些调试标志(如果在方案中设置)如 malloc 保护边缘等将对性能产生严重影响。 【参考方案1】:

您的预加载代码不正确。请改用这个:

NSMutableArray *imageArray = [[NSMutableArray alloc] init];

[imageArray addObject: [SKTexture textureWithImageNamed:@"obstacle.png"]];
[imageArray addObject: [SKTexture textureWithImageNamed:@"background.png"]];
[imageArray addObject: [SKTexture textureWithImageNamed:@"Ghost.png"]];

[SKTexture preloadTextures:imageArray withCompletionHandler:^
 
     SKTransition *reveal = [SKTransition fadeWithDuration:0.75];
     MGLCreateMainMenuScene *scene = [[MGLCreateMainMenuScene alloc] initWithSize:self.view.bounds.size];
     scene.scaleMode = SKSceneScaleModeAspectFill;
     [self.view presentScene:scene transition:reveal];
 ];

【讨论】:

以上是关于Sprite Kit 加载速度慢的主要内容,如果未能解决你的问题,请参考以下文章

js加载速度慢怎么解决?

js加载速度慢怎么解决?

iOS 7 Sprite Kit 动画速度变化

电脑进游戏加载速度慢怎么办

如何根据平移手势速度向 Sprite Kit 节点应用角脉冲

以一定速度在屏幕上移动对象。(Sprite Kit)