Google Play 游戏服务成就加载

Posted

技术标签:

【中文标题】Google Play 游戏服务成就加载【英文标题】:Google Play Game Services achievement loading 【发布时间】:2013-06-27 20:43:00 【问题描述】:

所以我正在用 Eclipse 编写一个 java 游戏,它使用 Google Play 游戏服务来处理我的成就。我已经完成了sample games provided by Google 中的所有操作,除了我将 GameHelper 直接添加到我现有的活动中,而不是使用 BaseGameActivity。现在我有一个问题。如果玩家使用一台设备解锁了对游戏有实际影响的成就,我怎样才能让另一台设备发现解锁的成就?

浏览了一下,我发现我应该使用mHelper.getGamesClient().loadAchievements(OnAchievementsLoadedListener listener),然后使用onAchievementsLoaded (int statusCode, AchievementBuffer buffer) 监听器。 AchievementBuffer buffer 似乎包含 all the data I want。

现在的问题是我不知道如何使用这个监听器。我应该把它放在哪里,我应该调用loadAchievements()还是在登录时自动调用等等。

如果有人可以帮助我,那就太好了:)

【问题讨论】:

【参考方案1】:

确实,成就缓冲区将包含您想要的所有数据(如果返回的 statusCode 是 STATUS_OK)。您可以通过以下方式从您的活动(每个示例扩展 BaseGameActivity)中“按需”加载成就:

getGamesClient().loadAchievements(new OnAchievementsLoadedListener() 
    @Override
    public void onAchievementsLoaded(int statusCode, AchievementBuffer buffer) 
        if (statusCode == GamesClient.STATUS_OK) 
            int achievementsCount    = buffer.getCount();

            [...]

        
        buffer.close();
    
);

并且不要忘记关闭缓冲区。

【讨论】:

我已经设法以另一种方式做到这一点,并打算自己回答这个问题,但你的答案比我的简单得多。感谢您也添加了状态检查和缓冲区关闭,尽管我已经知道了:)

以上是关于Google Play 游戏服务成就加载的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏服务 - 隐藏/取消隐藏成就

Google Play 游戏服务成就活动立即结束

Google Play 游戏服务获取成就列表

Google Play 游戏服务 - 无法解锁成就

Google Play 游戏服务:显示解锁成就

Google Play 游戏服务 - 管理成就