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

Posted

技术标签:

【中文标题】Google Play 游戏服务获取成就列表【英文标题】:Google Play Game Services get achievements list 【发布时间】:2014-09-30 12:52:06 【问题描述】:

我正在将 Google Play 游戏服务集成到我的游戏中。现在我想在不启动achievements intent 的情况下检索成就列表。

我想要该意图背后的列表,以便我可以使用此信息填充我自己的 UI 元素。 我没有使用旧的 GooglePlayServicesClient,我使用的是 GoogleApiClient!

感谢您的帮助;)

【问题讨论】:

看看我的this answer,它显示了你需要什么。 哇。让我试一试!谢谢 解决了!你介意回答这个吗?我会接受的!谢谢 【参考方案1】:

检索成就列表的代码可以在this answer找到。

以下是代码 sn-p - 请参阅链接的答案以获取完整说明:

public void loadAchievements()  
   boolean fullLoad = false;  // set to 'true' to reload all achievements (ignoring cache)
   float waitTime = 60.0f;    // seconds to wait for achievements to load before timing out

   // load achievements
   PendingResult p = Games.Achievements.load( playHelper.getApiClient(), fullLoad );
   Achievements.LoadAchievementsResult r = (Achievements.LoadAchievementsResult)p.await( waitTime, TimeUnit.SECONDS );
   int status = r.getStatus().getStatusCode();
   if ( status != GamesStatusCodes.STATUS_OK )  
      r.release();
      return;           // Error Occured
   

   // cache the loaded achievements
   AchievementBuffer buf = r.getAchievements();
   int bufSize = buf.getCount();
   for ( int i = 0; i < bufSize; i++ )  
      Achievement ach = buf.get( i );

      // here you now have access to the achievement's data
      String id = ach.getAchievementId();  // the achievement ID string
      boolean unlocked = ach.getState == Achievement.STATE_UNLOCKED;  // is unlocked
      boolean incremental = ach.getType() == Achievement.TYPE_INCREMENTAL;  // is incremental
      if ( incremental )
         int steps = ach.getCurrentSteps();  // current incremental steps
   
   buf.close();
   r.release();

此代码应在 AsyncTask 中运行,因为在等待成就加载时可能需要一些时间才能完成。

【讨论】:

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

Google Play 游戏服务 + 模拟器

Google Play 游戏服务成就加载

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

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

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

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