0

我已经做了所有事情并将游戏中心集成到我的游戏中,我的游戏是一个跑步游戏,所以我在我的游戏中添加了一些成就,比如最好的跑步者(500米),极限跑步者(1000米),王者跑步者(2000米)喜欢那。

一切正常,但问题是,如果用户跑了 500 米,它将解锁成就板上的最佳跑步者徽章。但如果用户像这样跑 501 或 510 或 540,我没有更新成就,我需要解锁这个徽章用户跑了 500 - 999 米。我尝试了很多来解决这个问题,但没有运气。

我的代码是它的更新分数方法

int dismetr = self.currentScore >= 500;

    self.currentScore = dismetr;

    [self checkAchievements];

我在这里静态地将值设置为 500

并在switch case方法中

- (void) checkAchievements
{



    NSString* identifier = NULL;
    double percentComplete = 0;
    switch(self.currentScore)
    {

            case 500:
                {
                    if (self.currentScore >= 500) {
                    NSLog(@"ACHIVEMENT 500");
                    identifier= kAchievement500meter ;
                    percentComplete= 100.0;
                    break;

                }
            }

        case 1000:
    // onother statments
        }

  if(identifier != NULL)
    {
        [self.gameCenterManager submitAchievement: identifier percentComplete: percentComplete];
    }
}

无论如何它都不会更新分数。但是如果我把

它的更新分数方法

int dismetr = 500;

    self.currentScore = dismetr;

    [self checkAchievements];

在这种方法中

- (void) checkAchievements
{

    NSString* identifier = NULL;
    double percentComplete = 0;
    switch(self.currentScore)
    {

            case 500:
                {

                    NSLog(@"ACHIVEMENT 500");
                    identifier= kAchievement500meter ;
                    percentComplete= 100.0;
                    break;


            }

        case 1000:
    // onother statments
        }

  if(identifier != NULL)
    {
        [self.gameCenterManager submitAchievement: identifier percentComplete: percentComplete];
    }
}

它正在正确更新分数..我能做些什么来解决这个问题。请帮助我做到这一点。

提前致谢。

4

1 回答 1

1

您正在执行switchon self.currentScore,因此您正在检查确切的值。您确实应该在if-else-construct 中执行此操作,该结构会检查 是否currentScore在特定范围内。

像这样:

- (void) checkAchievements
{

    NSString* identifier = NULL;
    double percentComplete = 0;

    if(self.currentScore >= 500 && self.currentScore < 1000) {
        NSLog(@"ACHIVEMENT 500");
        identifier= kAchievement500meter ;
        percentComplete= 100.0;
    }

    // onother statments

    if(identifier != NULL)
    {
        [self.gameCenterManager submitAchievement:identifier
                                  percentComplete:percentComplete];
    }
}
于 2012-10-08T07:48:53.967 回答