【问题标题】:Android - How to check if an achievement has been unlockedAndroid - 如何检查成就是否已解锁
【发布时间】:2014-02-28 06:57:17
【问题描述】:

我的游戏有一些增量成就,我想检查其中一个是否已经解锁。我该怎么做?

原来我是用这个方法的:

getGamesClient().incrementAchievement(achievement, increment);

然后我尝试使用这个:

mHelper.getGamesClient().incrementAchievementImmediate(new OnAchievementUpdatedListener()
{
    @Override
    public void onAchievementUpdated(int statusCode, String achievementId)
    {
        // TODO: Check if the achievement got unlocked
    }
}, achievement, increment);

这是做我想做的事情的正确方法吗?有没有更好的办法?

我的测试中只有两个 statusCode 值。

值:5 = STATUS_NETWORK_ERROR_OPERATION_DEFERRED

值:0 = STATUS_OK

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

    标签: android google-play-services achievements


    【解决方案1】:

    声明这个内部类:

    class AchievementClass implements ResultCallback<Achievements.LoadAchievementsResult> {
    
        @Override
        public void onResult(LoadAchievementsResult arg0) {
            Achievement ach;
            AchievementBuffer aBuffer = arg0.getAchievements();
            Iterator<Achievement> aIterator = aBuffer.iterator();
    
            while (aIterator.hasNext()) {
                ach = aIterator.next();
                if ("The Achievement Id you are checking".equals(ach.getAchievementId())) {
                    if (ach.getState() == Achievement.STATE_UNLOCKED) {
                        // it is unlocked
                    } else {
                        //it is not unlocked
                    }
                    aBuffer.close();
                    break;
                }
            }
        }       
    }
    

    并像这样使用它:

    Games.Achievements.load(ApiClient, false).setResultCallback(new AchievementClass());
    

    这将获取当前登录玩家的成就数据,遍历所有的成就,当达到你关心的成就时,它会检查它是否被解锁。

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2022-11-11
      • 2017-11-13
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多