BOOL 在更新时的 if 语句中给出不同的结果:(CFTimeInterval)currentTime 方法

BOOL gives different result in if statement at update:(CFTimeInterval)currentTime method

我有两个场景 - DifficultSceneGameScene。在 DifficultScene 中,我有三个按钮 - 简单、中等和困难。我使用一个全局变量 Bool 来跟踪当前的难度级别。当我尝试简单模式时,一切正常,但当我尝试中等或困难时,bool 每秒都在变化,从困难跳到中等和简单,使游戏无法玩。 我的问题是 - 我该如何修复它?这是发生这种情况的代码:
GamesScene.m

-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
extern BOOL isEasyMode;
extern BOOL isMediumMode;
extern BOOL isHardMode;
if ((isEasyMode = YES)) {
    NSLog(@"easy");
    [self computer];
}
if ((isMediumMode = YES)) {
    NSLog(@"medium");
    [self computerMedium];
}
if ((isHardMode = YES)) {
    NSLog(@"hard");
    [self computerHard];
}

[self scoreCount];
}

(如果需要更多代码,我会post)

我认为您的更新方法会根据计时器定期调用,因此如果是这样,它将被连续调用。这就是我认为它发生的原因,另一件重要的事情是你应该使用 == 进行比较。您正在使用 (isEasyMode = YES),这意味着您正在将 YES 分配给 isEasyMode

所以将所有 if 语句如 if ((isEasyMode = YES)) 替换为 if (isEasyMode == YES)

更新:

if语句应该喜欢,

  if (isEasyMode == YES) {
    NSLog(@"easy");
    [self computer];
}

希望这会有所帮助:)