【问题标题】:XCode track variable (SKNode.paused)XCode 跟踪变量(SKNode.paused)
【发布时间】:2014-09-20 19:56:18
【问题描述】:

我正在 XCode 的 SpriteKit 上编写游戏。我有一个变量 NodeGamePlay(一个 SKNode),当我按下暂停按钮时,我将其设置为 NodeGamePlay.paused=true。我通过分散在我的代码中的各种 NSLog 语句跟踪了这一点,当我设置 NodeGamePlay.paused=true 时,游戏实际上暂停了,但它似乎有点随意取消暂停(我什至在代码中的任何地方都没有 NodeGamePlay.paused=false)。

无论如何,当它被错误地更改为paused=false 时,我没有成功追踪。我尝试使用“观察变量”功能来观察变量 NodeGamePlay,但调试不会停止/提醒我 NodeGamePlay 在真假之间切换。我想知道是否有某种方法可以跟踪此属性并在值更改后立即停止调试?

【问题讨论】:

  • 需要观察具体NodeGamePlay对象的实例变量_paused
  • 谢谢Droppy,我是一个初级程序员,你介意解释一下我将如何做到这一点吗? PS:在底部调试变量窗口中,我添加了一个表达式“NodeGamePlay.paused”,它理解为一个布尔值,但它给了我一个错误“未能为 NodeGamePlay.paused 创建观察点”;有什么想法吗?
  • 在可以看到对象的地方打断并展开变量,直到可以看到_block实例变量,然后添加观察点(右键单击)。
  • 是的.paused 是getter/setter;您需要使用支持实例变量。
  • 也可以试试 quicklook 插件,这样你就可以真正看到 SK 类属性(和 ivars,甚至是私有属性):github.com/KoboldKit/SpriteKit-QuickLook

标签: objective-c xcode debugging variables sprite-kit


【解决方案1】:

在 Sprite Kit 的子节点上设置 .paused == TRUE 在我的经验中会产生一些奇怪的行为,至少在 iOS 7 中是这样,因为当父节点的 .paused 设置为 FALSE 时,它会设置其所有子节点。暂停为 FALSE 等。

因此,它创建了一个场景,您需要在 NodeGamePlay 类上覆盖 setPaused 以检查不同的标志,以查看它是否应该允许 .paused 在其父级调用它时设置为 FALSE。

-(void)setPaused:(BOOL)paused
{
    if (paused == NO && self.iAmAllowedToUnPauseWhenParentTellsMe == NO) {
        return;
    }

    [super setPaused:paused];

}

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多