【问题标题】:How to load iOS7 app scene before playing the game?如何在玩游戏前加载 iOS7 应用场景?
【发布时间】:2014-10-06 04:22:56
【问题描述】:

所以我一直在编写我的第一个 iOS 应用程序,学习 Objective-C 和 sprite 工具包。我的“场景”越来越多,每当我在模拟器中运行游戏时,游戏的前四分之一秒都会“抖动”并且难以控制,但从那里开始以 60.0fps 的速度运行。如何让场景在实际开始之前完全加载并准备好播放?

【问题讨论】:

    标签: ios objective-c xcode ios7 sprite-kit


    【解决方案1】:

    在模拟器上进行测试永远不会为您提供准确的 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"];

    【讨论】:

    • 还应该将字体和音频添加到要与此答案一起预加载的内容列表中。
    • Xcode也提供了自己的atlas纹理打包机制
    猜你喜欢
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多