Android - 如何检查成就是不是已解锁

Posted

技术标签:

【中文标题】Android - 如何检查成就是不是已解锁【英文标题】: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

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

谢谢

【问题讨论】:

【参考方案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());

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

【讨论】:

以上是关于Android - 如何检查成就是不是已解锁的主要内容,如果未能解决你的问题,请参考以下文章

谷歌游戏服务成就不弹出

检查您是不是已在 Game Center/GameKit 中解锁成就

sql 查询矿层已解锁指定矿层的人数

Android - 在成就解锁时播放声音

Steam 成就 API - 如何获得成就解锁日期?

《如龙7》Steam版国区已解锁 售价389元支持中文