【发布时间】:2014-10-06 04:22:56
【问题描述】:
所以我一直在编写我的第一个 iOS 应用程序,学习 Objective-C 和 sprite 工具包。我的“场景”越来越多,每当我在模拟器中运行游戏时,游戏的前四分之一秒都会“抖动”并且难以控制,但从那里开始以 60.0fps 的速度运行。如何让场景在实际开始之前完全加载并准备好播放?
【问题讨论】:
标签: ios objective-c xcode ios7 sprite-kit
所以我一直在编写我的第一个 iOS 应用程序,学习 Objective-C 和 sprite 工具包。我的“场景”越来越多,每当我在模拟器中运行游戏时,游戏的前四分之一秒都会“抖动”并且难以控制,但从那里开始以 60.0fps 的速度运行。如何让场景在实际开始之前完全加载并准备好播放?
【问题讨论】:
标签: ios objective-c xcode ios7 sprite-kit
在模拟器上进行测试永远不会为您提供准确的 FPS。始终在实际设备上进行测试。
为您的图像使用纹理图集。您可以从Sprite Kit Programming Guide 获取有关纹理图集的更多信息。
以下是如何预加载纹理图集的代码示例:
-(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"];
【讨论】: