c# - iOS 中的游戏中心 : GKScore vs. GKachievement?

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

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

(1) GK成就

我知道在 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();   

        });
    } 

最佳答案

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

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

提交成就时,该分数将覆盖应该显示的分数

这是我的 2 个测试用例:

(A) 测试用例 1:

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

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

(B) 测试用例 2:

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

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


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

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

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


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

关于c# - iOS 中的游戏中心 : GKScore vs. GKachievement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049318/

相关文章:

c# - CPU 计算与 IO 操作的异步等待用法?

c# - 如何将 AdBlock Plus 集成到 C# WebBrowser 控件中?

javascript - iOS 上 Cordova inAppBrowser 中的executeScript执行不一致

ios - 向 UITextField 添加不透明 subview

ios - 游戏中心 iOS 7 不工作

c# - 如何在NEST 2.0中设置文档名称

c# - Selenium 的 GetAttribute 方法的复杂性

iOS PayPal 与后端链式支付的集成

ios - Game Center 与 Sprite Kit 的集成?

Objective-C 无法调用 Game Center 中的函数