במדריך הזה נסביר איך להשתמש בממשקי ה-API של הלידרבורד ב-SDK של Play Games Services c++ כדי ליצור לידרבורדים חזותיים, לתעד את הניקוד של השחקן ולהשוות את הניקוד לניקוד של השחקן מסשנים קודמים של המשחק. ממשקי ה-API נמצאים ב-LeaderboardsClient.
לפני שמתחילים
אם עדיין לא עשיתם זאת, אנחנו ממליצים לכם להכיר את המושגים שקשורים לטבלאות המובילים במשחקים.
לפני שמתחילים לכתוב קוד באמצעות ממשקי ה-API של טבלאות המובילים:
מתקינים ומגדירים את האפליקציה לפי ההוראות לשימוש ב-Google Play Games Services שמופיעות במדריך להגדרת Google Play Services SDK.
מגדירים את הלידרבורדים שרוצים שהמשחק יציג או יעדכן, לפי ההוראות במדריך Google Play Console.
מעיינים בהמלצות שמופיעות ברשימת המשימות לאיכות.
קבלת לקוח הלידרבורד
כדי להתחיל להשתמש ב-Leaderboards API, המשחק שלכם צריך קודם לקבל אובייקט LeaderboardsClient.
כדי לעשות את זה, מפעילים את השיטה PgsLeaderboardsClient_create() ומעבירים את הפעילות.
עדכון התוצאה של השחקן
כשהניקוד של השחקן משתנה (לדוגמה, כשהשחקן מסיים את המשחק), המשחק יכול לעדכן את הניקוד בטבלת המובילים באמצעות קריאה אל PgsLeaderboardsClient_submitScoreImmediate. צריך להעביר את מזהה הטבלה, את ערך הנקודות הגולמי, תג נקודות אופציונלי ופונקציית התקשרות חזרה.
// Callback function to handle the result of submitting the score void OnScoreSubmitted(PgsStatusCode status_code, PgsScoreSubmissionData* score_submission_data, void* user_data) { if (status_code == PGS_STATUS_SUCCESS) { // Score submitted successfully // You can inspect score_submission_data for details // Remember to release the data when done: PgsScoreSubmissionData_Release(score_submission_data); } else { // Handle error } } // Function to submit the score void SubmitScore(PgsLeaderboardsClient* client, const char* leaderboard_id, int64_t score) { const char* score_tag = NULL; // Optional tag PgsLeaderboardsClient_submitScoreImmediate( client, leaderboard_id, score, score_tag, OnScoreSubmitted, NULL // user_data - optional context pointer ); } // Example usage: // Assuming 'my_leaderboard_id' is defined elsewhere, e.g., fetched from resources // SubmitScore(leaderboards_client, my_leaderboard_id, 1337);
מומלץ לנהל את מזהי טבלת המובילים כקבועים או כמשאבים בקוד c++.
הצגת טבלת באז
כדי להציג את ממשק המשתמש של הלידרבורד שמוגדר כברירת מחדל עבור לידרבורד ספציפי, קוראים ל-PgsLeaderboardsClient_showLeaderboardUI. הפונקציה הזו דורשת את ה-handle של הלקוח, הפעילות, מזהה הטבלה, טווח הזמן והאוסף, וקריאה חוזרת.
// Callback function to handle the result of showing the UI void OnShowLeaderboardUI(PgsStatusCode status_code, bool success, void* user_data) { if (status_code == PGS_STATUS_SUCCESS && success) { // UI was shown successfully } else { // Handle error or failure to show UI } } // Function to show a specific leaderboard UI void ShowLeaderboard(PgsLeaderboardsClient* client, jobject activity, const char* leaderboard_id) { PgsLeaderboardsClient_showLeaderboardUI( client, activity, leaderboard_id, PGS_LEADERBOARD_TIME_SPAN_ALL_TIME, // Or PGS_LEADERBOARD_TIME_SPAN_DAILY, PGS_LEADERBOARD_TIME_SPAN_WEEKLY PGS_LEADERBOARD_COLLECTION_PUBLIC, // Or PGS_LEADERBOARD_COLLECTION_FRIENDS OnShowLeaderboardUI, NULL // user_data - optional context pointer ); } // Example usage: // ShowLeaderboard(leaderboards_client, android_activity, my_leaderboard_id);
הפונקציה הזו מציגה את ממשק המשתמש. אובייקט activity מספק את ההקשר להצגת ממשק המשתמש.