Bu konularda, Unity'de Play Games Hizmetleri skor tablolarının nasıl kullanılacağı açıklanmaktadır. oyunlar.
Başlamadan önce
Unity projenizi ve Unity için Google Play Games eklentisini oluşturun. Örneğin, Başlangıç kılavuzuna göz atın.
Etkinlik oluşturma
Skor tablolarını Google Play Console'da oluşturursunuz. Ayrıntılar için skor tabloları kılavuzu: Play Games Hizmetleri. Skor tablosu oluşturduktan sonra Android kaynağını ekleyin aşağıdaki şekilde açıklandığı gibi eklentiye başlangıç kılavuzuna bakın.
Skor tablosunda skor yayınlama
Skor tablosunda skor yayınlamak için Social.reportScore'u çağırın.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Post score 12345 to leaderboard ID "Cfji293fjsie_QA")
Social.ReportScore(12345, "Cfji293fjsie_QA", (bool success) => {
// Handle success or failure
});
Puan yayınlamak ve meta veri etiketi eklemek için PlayGamesPlatform
örneği kullanın
doğrudan:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Post score 12345 to leaderboard ID "Cfji293fjsie_QA" and tag "FirstDaily")
PlayGamesPlatform.Instance.ReportScore(12345, "Cfji293fjsie_QA", "FirstDaily", (bool success) => {
// Handle success or failure
});
Platformun ve sunucunun güncel puanları otomatik olarak sileceğini unutmayın. oyuncunun mevcut rekorundan düşük olduğundan skorları özgürce gönderebilirsiniz skorun, oyuncunun skorundan yüksek olup olmadığını test etmek için kullanabilirsiniz.
Leaderboard kullanıcı arayüzünü göster
Tüm skor tabloları için yerleşik kullanıcı arayüzünü görüntülemek amacıyla Social.ShowLeaderboardUI çağrısı yapın.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
Social.ShowLeaderboardUI();
Tüm skor tabloları yerine belirli bir skor tablosunu göstermek isterseniz
yönteme bir leaderboard kimliği iletebilir. Ancak bu bir Play Games
uzantısına göre, Sosyal.Etkin nesnesinin bir PlayGamesPlatform
değerine yayınlanması gerekir
önce nesne:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
PlayGamesPlatform.Instance.ShowLeaderboardUI("Cfji293fjsie_QA");
Skor Tablosu verilerine erişme
Skor tablosu puan verilerini almanın 2 yöntemi vardır.
Social.ILeaderboard'u kullanın
Bu yöntemde, kapsamı ve filtreleri tanımlamak için ILeaderboard arayüzü kullanılır gerektiğine değinmeliyiz. Bu yaklaşım şunları yapılandırmanıza olanak tanır: 1. Skor tablosu kimliği 2. Koleksiyon (sosyal veya herkese açık) 3. Zaman aralığı (günlük, haftalık, tüm zamanlar) 5. Puanları almaya başlayacak sıralama konumu. 5. Puan sayısı (varsayılan değer 25'tir). 6. Kullanıcı kimliğine göre filtreleyin.
Gönderen parametresi pozitif değilse döndürülen sonuçlar şöyle olur: oyuncu merkezli, yani mevcut oyuncunun skoru etrafındaki puanlar geri döndü.
ILeaderboard lb = PlayGamesPlatform.Instance.CreateLeaderboard();
lb.id = "MY_LEADERBOARD_ID";
lb.LoadScores(ok =>
{
if (ok) {
LoadUsersAndDisplay(lb);
}
else {
Debug.Log("Error retrieving leaderboardi");
}
});
PlayGamesPlatform.LoadScores() işlevini kullanma
Bu yöntem, doğrudan PlayGamesPlatform
kullanır ve bu da ek
ve skor tablosu verilerine erişme sırasında esneklik ve bilgi sağlar.
PlayGamesPlatform.Instance.LoadScores(
GPGSIds.leaderboard_leaders_in_smoketesting,
LeaderboardStart.PlayerCentered,
100,
LeaderboardCollection.Public,
LeaderboardTimeSpan.AllTime,
(data) =>
{
mStatus = "Leaderboard data valid: " + data.Valid;
mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
});
LoadScores() parametreleri şunlardır:
- skor tablosu kimliği
- başlangıç konumu (en yüksek skorlar veya oyuncu merkezde)
- satır sayısı
- skor tablosu koleksiyonu (sosyal veya herkese açık)
- zaman aralığı (günlük, haftalık, tüm zamanlar)
- LeaderboardScoreData nesnesini kabul eden geri çağırma.
LeaderboardScoreData
sınıfı, bilgileri tekrar
çağrısına göre arama yapabilirsiniz. Üyeler şunlardır:
1. Kimlik - skor tablosu kimliği
2. Geçerli: Döndürülen veriler geçerliyse (çağrı başarılıysa) doğru
3. Durum - aramanın ResponseStatus
5. Yaklaşık Sayı - skor tablosundaki yaklaşık skor sayısı
5.c Başlık - skor tablosunun başlığı
6. Oyuncu Puanı - geçerli oyuncunun skoru
7. Puanlar - skorların listesi
8. PrevPageToken - LoadMoreScores()
öğesini çağırmak için kullanılabilecek bir jeton
skorların bir önceki sayfasına gidin.
9. NextPageToken - LoadMoreScores()
öğesini çağırmak için kullanılabilecek bir jeton
skorların bir sonraki sayfasına gidin.
void GetNextPage(LeaderboardScoreData data)
{
PlayGamesPlatform.Instance.LoadMoreScores(data.NextPageToken, 10,
(results) =>
{
mStatus = "Leaderboard data valid: " + data.Valid;
mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
});
}
Arkadaşlarınızı yüklemeye çalışırken bu arama başarısız olabilir
Kullanıcı, arkadaş listesini paylaşmadıysa ResponseCode.ResolutionRequired
bir soru işareti olacaktı. Bu durumda, istekte bulunmak için AskForLoadFriendsResolution
öğesini kullanın.
erişim.
Oyuncu adlarını al
Her skorda, skoru yapan oyuncunun kullanıcı kimliği bulunur. Tekliflerinizi otomatikleştirmek ve optimize etmek için
Oyuncu profilini yüklemek için Social.LoadUsers()
. İçeriğinizin
, oyuncuların gizlilik ayarlarına tabidir.
internal void LoadUsersAndDisplay(ILeaderboard lb)
{
// Get the user ids
List<string> userIds = new List<string>();
foreach(IScore score in lb.scores) {
userIds.Add(score.userID);
}
// Load the profiles and display (or in this case, log)
Social.LoadUsers(userIds.ToArray(), (users) =>
{
string status = "Leaderboard loading: " + lb.title + " count = " +
lb.scores.Length;
foreach(IScore score in lb.scores) {
IUserProfile user = FindUser(users, score.userID);
status += "\n" + score.formattedValue + " by " +
(string)(
(user != null) ? user.userName : "**unk_" + score.userID + "**");
}
Debug.log(status);
});
}