ios - Sprite Kit - 为多个场景定义变量

标签 ios objective-c sprite-kit

我有两个关于多关卡场景的问题。

  1. 不同级别有多个场景。所有这些场景都使用相同的位掩码类别和在其 .h 文件中定义的其他变量。有没有一种方法可以在一个文件中定义位掩码类别和其他变量,而不是在每个关卡场景的 .h 文件中定义?

  2. 在关卡场景的更新方法中,我检测 float “分数”是否高于或等于 100。如果是,则将场景切换到下一个关卡。但是因为 update 方法运行每一帧,它只是卡住并尝试一遍又一遍地改变场景。有没有办法在更新方法中只运行一次 if 语句?

最佳答案

1 - 子类化就是答案。创建一个类 BaseScene,它是 SKScene 的子类。在这里包括所有场景的所有共同元素。这不仅包括位掩码类别,还包括场景可能具有的任何方法或其他属性。这不仅可以解决您的问题,还可以缩短您的代码长度。

让你所有的关卡场景成为 BaseScene 的子类。

2 - 在您的代码中创建一个名为 scoreReached 或其他名称的 Bool 变量。在初始化时将此变量设置为 NO,然后在 -update 方法中检查分数的代码中,执行如下操作:

if (!scoreReached)
{
    if (score >= 100)
    {
        //Do whatever is needed
        scoreReached = YES;
    }
}

关于ios - Sprite Kit - 为多个场景定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777548/

相关文章:

iphone - run loop/drawRect 中神秘的 "progressive slowing"问题

ios - 以编程方式选择不在当前 View 中的 UITableView 单元格

objective-c - 核心剧情: How to position the axis title for two y-axes at the same height?

objective-c - 如何以编程方式将 NSTableColumn 绑定(bind)到 NSArrayControllerarrangedObjects?

ios - 使用手动推送导航时 Storyboard元素不可见

ios - 游戏引擎 Collison 位掩码... 为什么是 0x01 等?

ios - 带有 RubyMotion 的顶部栏 iOS 应用程序?

iphone - 如何在 iPhone 应用程序中实现密码恢复?

ios - skspritenode 颜色属性仅在第一个实例中设置

swift - 如何记录用户使用 SKScene 的时间?