Topik ini menjelaskan cara menggunakan papan peringkat Layanan game Play dalam game Unity.
Sebelum memulai
Siapkan project Unity Anda dan plugin Google Play Game untuk Unity. Untuk mengetahui detailnya, lihat Panduan memulai.
Membuat peristiwa
Anda dapat membuat papan peringkat di Konsol Google Play. Untuk mengetahui detailnya, lihat panduan papan peringkat untuk Layanan game Play. Setelah membuat papan peringkat, tambahkan resource Android tersebut ke plugin seperti yang dijelaskan dalam panduan memulai.
Memposting Skor ke Papan Peringkat
Untuk memposting skor ke papan peringkat, panggil Social.ReportScore.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Post score 12345 to leaderboard ID "Cfji293fjsie_QA")
Social.ReportScore(12345, "Cfji293fjsie_QA", (bool success) => {
// Handle success or failure
});
Untuk memposting skor dan menyertakan tag metadata, gunakan instance PlayGamesPlatform
secara langsung:
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
});
Perlu diperhatikan bahwa platform dan server akan otomatis menghapus skor yang lebih rendah daripada skor tertinggi pemain yang sudah ada, sehingga Anda dapat mengirimkan skor dengan bebas tanpa perlu memeriksa apakah skor lebih besar daripada skor pemain yang sudah ada.
Menampilkan UI Papan Peringkat
Untuk menampilkan UI bawaan bagi semua papan peringkat, panggil Social.ShowLeaderboardUI.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
Social.ShowLeaderboardUI();
Jika ingin menampilkan papan peringkat tertentu, bukan semua papan peringkat, Anda
dapat meneruskan ID papan peringkat ke metode tersebut. Namun, ini adalah ekstensi Play Game,
sehingga objek Social.Active perlu ditransmisikan ke objek PlayGamesPlatform
terlebih dahulu:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
PlayGamesPlatform.Instance.ShowLeaderboardUI("Cfji293fjsie_QA");
Mengakses data Papan Peringkat
Ada 2 metode untuk mengambil data skor papan peringkat.
Menggunakan Social.ILeaderboard
Metode ini menggunakan antarmuka ILeaderboard untuk menentukan cakupan dan filter guna mendapatkan data. Pendekatan ini memungkinkan Anda mengonfigurasi: 1. ID papan peringkat 2. Koleksi (sosial atau publik) 3. Jangka waktu (harian, mingguan, sepanjang waktu) 4. Posisi peringkat untuk mulai mengambil skor. 5. Jumlah skor (defaultnya adalah 25). 6. Filter menurut ID pengguna.
Jika parameter dari non-positif, hasil yang ditampilkan akan berpusat pada pemain, yang berarti skor di sekitar skor pemain saat ini akan ditampilkan.
ILeaderboard lb = PlayGamesPlatform.Instance.CreateLeaderboard();
lb.id = "MY_LEADERBOARD_ID";
lb.LoadScores(ok =>
{
if (ok) {
LoadUsersAndDisplay(lb);
}
else {
Debug.Log("Error retrieving leaderboardi");
}
});
Menggunakan PlayGamesPlatform.LoadScores()
Metode ini menggunakan PlayGamesPlatform
secara langsung, yang memberikan fleksibilitas dan informasi
tambahan saat mengakses data papan peringkat.
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;
});
Parameter untuk LoadScores() adalah:
- leaderboardId
- posisi awal (skor atau pemain teratas di posisi tengah)
- jumlah baris
- koleksi papan peringkat (sosial atau publik)
- rentang waktu (harian, mingguan, sepanjang waktu)
- callback yang menerima objek LeaderboardScoreData.
Class LeaderboardScoreData
digunakan untuk menampilkan informasi kembali ke
pemanggil saat memuat skor. Anggotanya adalah:
1. ID - ID papan peringkat
2. Valid - benar jika data yang ditampilkan valid (panggilan berhasil)
3. Status - ResponseStatus panggilan
4. ApproximateCount - perkiraan jumlah skor di papan peringkat
5. Judul - judul papan peringkat
6. PlayerScore - skor pemain saat ini
7. Skor - daftar skor
8. PrevPageToken - token yang dapat digunakan untuk memanggil LoadMoreScores()
guna
mendapatkan halaman skor sebelumnya.
9. NextPageToken - token yang dapat digunakan untuk memanggil LoadMoreScores()
guna
mendapatkan halaman skor berikutnya.
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;
});
}
Panggilan ini mungkin gagal saat mencoba memuat teman dengan
ResponseCode.ResolutionRequired
jika pengguna belum membagikan daftar teman mereka
dengan game. Dalam hal ini, gunakan AskForLoadFriendsResolution
untuk meminta
akses.
Mendapatkan nama pemain
Setiap skor memiliki userId pemain yang membuat skor. Anda dapat menggunakan
Social.LoadUsers()
untuk memuat profil pemain. Ingat bahwa konten
profil pemain tunduk pada setelan privasi pemain.
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);
});
}