【问题标题】:Error in updating the score in a game在游戏中更新分数时出错
【发布时间】:2015-08-12 09:42:32
【问题描述】:

当我在游戏中更新分数时遇到问题我不知道是什么问题但是当我射击某些东西时分数应该增加 1 但在我的代码中有时它会增加 2 或 3 有时 1 它不是恒定的不知道为什么会发生这种情况是我使用的代码

@interface GameScene () {

    SKLabelNode* _scoreLabelNode;
    NSInteger _score;


}


-(void)didMoveToView:(SKView *)view {

    _score = 0;
        _scoreLabelNode = [SKLabelNode labelNodeWithFontNamed:@"Silom Regular"];
        _scoreLabelNode.fontSize = 50;
        _scoreLabelNode.position = CGPointMake(self.size.width - 335 , self.size.height - 60);
        _scoreLabelNode.zPosition = 100;
        [self addChild:_scoreLabelNode];

        _scoreLabelNode.text = [NSString stringWithFormat:@"%d",_score];
}

if (contact.bodyB.categoryBitMask == ObjectCategory) {

        _score++;
        _scoreLabelNode.text = [NSString stringWithFormat:@"%d",_score];
}

【问题讨论】:

  • 在 _score++ 上添加断点,只是为了检查它增加了多少次
  • 如果条件if (contact.bodyB.categoryBitMask == ObjectCategory),你在哪里写的?在哪个活动上?
  • 看看这是否有帮助:stackoverflow.com/a/28527280/3402095 如果该帖子中的任何内容都不能应用于您的代码,您可以尝试使用类似这样的方法:stackoverflow.com/a/23367987/3402095
  • @NeverHopeless 在这个 -(void)didBeginContact:(SKPhysicsContact *)contact {
  • @Misha 我把 "NSLog (@"%d", _score )" 放在 "_score++" 之后,它应该像 10 11 12 .. 一样递增,但分数从 10 跳到 12

标签: ios objective-c sprite-kit skscene


【解决方案1】:

这个委托很少有类似的问题,看看这是否可以解决你的问题:

SpriteKit: didBeginContact being called non-stop on iPad

Why are didBeginContact called multiple times?

didBeginContact is being called multiple times for the same SKPhysicsBody

即使它不能解决您的问题,您也可以使用标志变量来处理一次此分数更新。例如,

bool hasScoreUpdated;

- (void)didBeginContact:(SKPhysicsContact * _Nonnull)contact
{
    if(!hasScoreUpdated)
    {
        _score++;
        hasScoreUpdated = true;
    }
     // your rest of the logic
}

- (void)didEndContact:(SKPhysicsContact * _Nonnull)contact
{
    hasScoreUpdated = false;
}

编辑:

根据您的上述评论:

我把 "NSLog (@"%d", _score )" 放在 "_score++" 之后,它应该增加 比如 10 11 12 .. 等等,但是分数从 10 跳到了 12

这可能是由于调用相应事件非常频繁和UI元素更新非常快。

【讨论】:

  • 谢谢你,但是链接“为什么 didBeginContact 被多次调用?”上面已经损坏了
  • 我能问你这个问题之外的问题吗?我只想在场景中的特定区域设置触摸,你知道我该怎么做吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多