Bu kılavuzda, görsel skor tabloları oluşturmak, oyuncunun skorunu kaydetmek ve skoru önceki oyun oturumlarındaki oyuncu skoruyla karşılaştırmak için Play Games Hizmetleri C++ SDK'sının skor tabloları API'lerinin nasıl kullanılacağı gösterilmektedir. API'leri LeaderboardsClient içinde bulabilirsiniz.
Başlamadan önce
Henüz yapmadıysanız lider tablolarıyla ilgili oyun kavramlarını incelemeniz faydalı olabilir.
Liderlik tabloları API'lerini kullanarak kod yazmaya başlamadan önce:
Uygulamanızı yükleme ve Google Play Games Hizmetleri'ni kullanacak şekilde ayarlama talimatlarını Google Play Hizmetleri SDK'sını ayarlama kılavuzunda bulabilirsiniz.
Google Play Console kılavuzundaki talimatları uygulayarak oyununuzun göstermesini veya güncellemesini istediğiniz skor tablolarını tanımlayın.
Kalite Kontrol Listesi'nde açıklanan öneriler hakkında bilgi edinin.
Liderlik tabloları istemcisini edinme
Skor tabloları API'sini kullanmaya başlamak için oyununuzun önce bir LeaderboardsClient nesnesi alması gerekir.
Bunu, PgsLeaderboardsClient_create() yöntemini çağırıp etkinliği ileterek yapabilirsiniz.
Oyuncunun puanını güncelleme
Oyuncunun puanı değiştiğinde (örneğin, oyuncu oyunu bitirdiğinde) oyununuz PgsLeaderboardsClient_submitScoreImmediate çağrısı yaparak oyuncunun puanını skor tablosunda güncelleyebilir. Liderlik tablosu kimliğini, ham puan değerini, isteğe bağlı bir puan etiketini ve bir geri çağırma işlevini iletmeniz gerekir.
// 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);
Liderlik tablosu kimliklerinizi C++ kodunuzda sabitler veya kaynaklar olarak yönetmek iyi bir uygulamadır.
Skor tablosu görüntüleme
Belirli bir skor tablosu için varsayılan skor tablosu kullanıcı arayüzünü göstermek istiyorsanız PgsLeaderboardsClient_showLeaderboardUI yöntemini çağırın. Bu işlev için istemci işleyicisi, etkinlik, skor tablosu kimliği, zaman aralığı ve koleksiyon ile geri çağırma gerekir.
// 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);
Bu işlev, kullanıcı arayüzünü gösterir. activity nesnesi, kullanıcı arayüzünü görüntüleme bağlamını sağlar.