1

我对 iOS 中与“游戏中心”相关的主题有疑问: GKAchievement vs. GKScore

(1) GKA成就

我知道在 iOS Game Center 中,我们可以定义成就和排行榜,并指定,例如,当玩家完成第一个成就时,我们会给玩家 10 分。也就是当用户成功完成成就后,我们使用GKAchievement向游戏中心提交成就。

(2) GKScore

那么,我们什么时候需要使用 GKScore呢?正如我在上一段中提到的,当玩家完成第一个成就时,我们可以给玩家一个特定的分数。那么,如果我们已经使用GKAchievement来为每个新成就的用户提供新分数,我们还需要使用 GKScore吗?GKScore的目的是什么?

或者,当我们使用GKScore时,我们不需要使用GKAchievement?换句话说,我们只需要使用这 2 个类中的 1 个,而不需要两者都使用?


下面是用 C# 提交分数GKScore的典型代码:

    public void reportScore(long score, string category, GameCenterController controller, bool show_dialog)
    {
        GKScore scoreReporter = new GKScore (category);
        scoreReporter.Value = score;

        scoreReporter.ReportScore ((error) => {     
        ((error) => {   // original
            if(error == null){
                if(show_dialog){
                    new UIAlertView ("Score Reported to Game Center", "Score Reported Successfully", null, "OK", null).Show ();
                }
            }
            else{
                if(show_dialog){
                    new UIAlertView ("Can't Submit Score to Game Center", "Please make sure that you logon to Game Center", null, "OK", null).Show ();
                }
            }

            //NSThread.SleepFor(1);         
            controller.updateHighScore();   

        });
    } 

4

1 回答 1

1

我做了一些测试并自己想出了“答案”。

如果我们同时使用GKAchievementGKScore提交成就和分数,那么通过GKScore提交的分数将显示在全球排行榜中。这个分数会覆盖我们通过GKAchievement提交成就时应该显示的分数

这是我的2个测试用例:

(A) 测试用例 1:

假设我在 Game Center 中定义了一个价值100分的成就。当用户玩游戏完成这个成就时,我先提交这个成就,然后提交3456分的分数(通过我的代码进行测试)。

接下来,我打开游戏中心,我可以看到我在排行榜上显示的分数是3456(而不是100分)。

(B) 测试用例 2:

假设我定义了一个价值100分的成就。当用户玩游戏并完成这个成就时,我只提交这个成就,而不是手动提交3456分的分数(通过我的代码进行测试)。

接下来,我打开游戏中心,我可以看到我在排行榜上显示的分数正好是100


注意:仅当开发人员将“分数提交类型”设置为“最佳分数”时,才会发生以下行为

如果您随后使用GKScore提交的分数高于 Game Center 排行榜中的现有分数,那么这个新的更高 分数将自动发布在排行榜中(由 Apple Game Center 发布,我们无需执行任何操作别的)。

现在,如果您随后使用 GKScore 提交的分数低于Game Center 排行榜中的现有分数,那么这个新的LOWER分数将不会发布在排行榜中。


(另一方面,如果开发者将“分数提交类型”设置为“最近分数”,那么只有“最近分数”而不是最高分数会发布到游戏中心。)

于 2016-08-20T05:08:57.403 回答