הישגים במשחקי Android

במדריך הזה מוסבר איך להשתמש בממשקי ה-API של ההישגים באפליקציה ל-Android כדי לפתוח ולהציג הישגים במשחק. ניתן למצוא את ממשקי ה-API. בcom.google.android.gms.games ו-com.google.android.gms.games.achievements חבילות.

לפני שמתחילים

אם עדיין לא עשית זאת, מומלץ לעיין השגת מושגים במשחק.

לפני שמתחילים לתכנת באמצעות ה-API של ההישגים:

קבלת לקוח של הישגים

כדי להתחיל להשתמש ב-API של ההישגים, המשחק צריך לקבל תחילה אובייקט AchievementsClient. אפשר לעשות זאת באמצעות קריאה ל Games.getAchievementClient() והעברת הפעילות.

זוכים בהישגים

כדי להשיג הישג, מפעילים את השיטה AchievementsClient.unlock() את מזהה ההישג.

קטע הקוד הבא מראה איך האפליקציה יכולה להגיע להישגים:

PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));

אם ההישג הוא מסוג מצטבר (כלומר, יש כמה שלבים שצריך לבצע כדי מבטלים את הנעילה), צריך להתקשר במקום זאת למספר AchievementsClient.increment().

קטע הקוד הבא מראה איך האפליקציה יכולה להגדיל את ההישג של השחקן:

PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);

לא צריך לכתוב קוד נוסף כדי לבטל את נעילת ההישג; Google Play Games Services מבטל את הנעילה של ההישג באופן אוטומטי כשהוא מגיע למספר השלבים הדרוש.

שיטה מומלצת היא להגדיר את מזהי ההישגים בקובץ strings.xml, כך המשחק שלך יכול להפנות להישגים לפי מזהה המשאב. כשמבצעים שיחות לצורך עדכון וטעינה בהישגים שלנו, חשוב לפעול גם לפי השיטות המומלצות האלה להימנע מחריגה ממכסת ה-API.

מוצגים הישגים

כדי להציג את ההישגים של השחקן, צריך להתקשר למספר AchievementsClient.getAchievementsIntent() כדי לקבל Intent ליצירה ממשק המשתמש של ההישגים המוגדרים כברירת מחדל. לאחר מכן המשחק יכול להציג את ממשק המשתמש באמצעות התקשרות startActivityForResult

בקטע הקוד הבא אפשר לראות איך האפליקציה יכולה להציג את ממשק המשתמש של הישג ברירת המחדל. בקטע הקוד, RC_ACHIEVEMENT_UI הוא מספר שלם שרירותי שהמשחק משתמש בו כקוד הבקשה.

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  PlayGames.getAchievementsClient(this)
      .getAchievementsIntent()
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_ACHIEVEMENT_UI);
        }
      });
}

למטה מוצגת דוגמה לממשק המשתמש של ההישגים שמוגדר כברירת מחדל.