所以我一直在编写我的第一个iOS应用程序,学习Objective-C和sprite kit。我的“场景”变得非常流行,每当我在模拟器中运行游戏时,游戏中的前四分之一有点“抖动”并且难以控制,但随后从那里以60.0fps的速度运行。如何让场景完全加载并准备好在实际开始之前播放?
答案 0 :(得分:1)
在模拟器上进行测试永远不会为您提供准确的FPS。始终在实际设备上进行测试。
为图像使用纹理图集。您可以从Sprite Kit Programming Guide获取有关纹理图集的更多信息。
以下是如何预加载纹理Atlas的代码示例:
-(void)loadMyAtlas
{
SKTextureAtlas *myAtlas = [SKTextureAtlas atlasNamed:@"TextureAtlasName"];
[SKTextureAtlas preloadTextureAtlases:[NSArray arrayWithObject:myAtlas] withCompletionHandler:^{
// do something here
}];
}
Texture Packer是来自CodeAndWeb的免费应用程序,可让您轻松创建纹理图集,包括动画。尝试一下。
CodeAndWeb在预加载实践,纹理图集和动画方面也有一个有趣的article。
要完成,正如原型所示,这里有预加载声音和字体的方法:
创建一个iVar SKAction *someSound;
,然后将以下代码与场景的加载代码someSound = [SKAction playSoundFileNamed:@"soundFileName.mp3" waitForCompletion:NO];
放在一起播放声音使用[self runAction:someSound];
原型answered关于预加载字体的问题:
延迟是基于字体的加载。最好预加载您打算使用的字体,声音和任何其他资源,以便在第一次实际使用时没有延迟。
您可以使用以下代码预加载设置:SKLabelNode *preload = [SKLabelNode labelNodeWithFontNamed:@"System"];