iOS游戏中心:GKScore与GKAchievement?

时间:2016-08-20 00:23:40

标签: c# ios game-center game-center-leaderboard gkscore

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

(1) GKAchievement

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

(2) GKScore

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

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

以下是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();   

        });
    } 

1 个答案:

答案 0 :(得分:1)

我做了一些测试,并找到了" 回答 "自己。

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

以下是我的2个测试用例:

(A)测试案例1:

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

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

(B)测试案例2:

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

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

注意:仅当开发人员设置"分数提交类型"时才会出现以下行为:到"最佳分数"

如果您随后使用GKScore提交的分数更高比游戏中心排行榜中的现有分数更高,那么这个新的 HIGHER 分数将自动发布到排行榜(由Apple Game Center提供,我们不必做任何其他事情)。

现在,如果您随后使用GKScore提交低于的分数,而不是游戏中心排行榜中的现有分数,那么这个新的 LOWER 分数将张贴在排行榜中。

(另一方面,如果开发者将"分数提交类型"设置为"最新分数",那么只有"最新分数"以及最高分在游戏中心发布。)