W tym artykule opisujemy, jak korzystać z tabel wyników w usługach gier Play w Unity gry.
Zanim rozpoczniesz
Skonfiguruj projekt w Unity i wtyczkę Gry Google Play dla Unity. Dla: Więcej informacji znajdziesz w przewodniku dla początkujących.
Tworzenie wydarzeń
Tabele wyników możesz tworzyć w Konsoli Google Play. Więcej informacji: przewodnika po tabelach wyników – Usługi gier Play. Po utworzeniu tabeli wyników dodaj jej zasób na Androida zgodnie z opisem w sekcji przewodnika dla początkujących.
Opublikuj wynik w tabeli wyników
Aby opublikować wynik w tabeli wyników, wywołaj 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
});
Aby opublikować wynik i dodać tag metadanych, użyj instancji PlayGamesPlatform
bezpośrednio:
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
});
Pamiętaj, że platforma i serwer automatycznie odrzucają wyniki, które są jest niższy niż istniejący rekord gracza, więc możesz swobodnie przesyłać wyniki bez sprawdzania, czy wynik jest lepszy od istniejącego wyniku.
Pokaż interfejs tabeli wyników
Aby wyświetlić wbudowany interfejs wszystkich tabel wyników, wywołaj social.ShowleaderUI.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
Social.ShowLeaderboardUI();
Jeśli chcesz wyświetlać konkretną tablicę wyników zamiast wszystkich, wybierz
może przekazać do metody identyfikator tabeli wyników. To jest jednak Gry Play,
więc obiekt Social.Active musi być rzutowany na PlayGamesPlatform
najpierw obiekt:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
PlayGamesPlatform.Instance.ShowLeaderboardUI("Cfji293fjsie_QA");
Dostęp do danych w tabeli wyników
Dane o wynikach z tabeli wyników można pobrać na 2 sposoby.
Korzystanie z Social.Itabeli wyników
Ta metoda korzysta z interfejsu Itabela wyników do definiowania zakresu i filtrów który ma pomóc w zebraniu danych. W ten sposób możesz skonfigurować: 1. Identyfikator tabeli wyników 2. kolekcję (społeczną lub publiczną), 3. przedział czasu (dzienny, tygodniowy, od początku); 4. Pozycja, w której rozpoczyna się pobieranie wyników. 5. Liczba wyników (wartość domyślna to 25). 6. Filtruj według identyfikatora użytkownika.
Jeśli parametr from ma wartość niedodatnią, zwracane wyniki są takie jak jest skoncentrowany na graczu, co oznacza, że wyniki aktualnego gracza są .
ILeaderboard lb = PlayGamesPlatform.Instance.CreateLeaderboard();
lb.id = "MY_LEADERBOARD_ID";
lb.LoadScores(ok =>
{
if (ok) {
LoadUsersAndDisplay(lb);
}
else {
Debug.Log("Error retrieving leaderboardi");
}
});
Użyj funkcji PlayGamesPlatform.LoadScores()
Ta metoda korzysta bezpośrednio z metody PlayGamesPlatform
, co zapewnia dodatkowe
i elastycznością przy korzystaniu z danych tabel wyników.
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;
});
Parametry LoadScores() to:
- identyfikator tablicy wyników
- pozycja początkowa (najwyższe wyniki lub wyśrodkowany zawodnik)
- liczba wierszy
- kolekcja wyników (społecznościowe lub publiczne)
- okres (dzienny, tygodniowy, od początku)
- wywołanie zwrotne akceptujące obiekt LeaderboardScoreData.
Klasa LeaderboardScoreData
jest używana do zwrócenia informacji z powrotem do funkcji
wywołujący podczas wczytywania wyników. Członkowie to:
1. ID – identyfikator tabeli wyników
2. Prawidłowy – true, jeśli zwrócone dane są prawidłowe (postępowanie zakończyło się powodzeniem)
3. Stan – ResponseStatus połączenia.
4. Przybliżona liczba – przybliżona liczba wyników w tabeli wyników.
5. Tytuł – tytuł tabeli wyników.
6. PlayerScore – wynik aktualnego gracza;
7. Wyniki - lista wyników
8. PrevPageToken – token służący do wywoływania funkcji LoadMoreScores()
w celu
wyświetlić poprzednią stronę wyników.
9. NextPageToken – token służący do wywoływania funkcji LoadMoreScores()
w celu
wyświetlić następną stronę wyników.
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;
});
}
Połączenie może się nie powieść, gdy spróbujesz załadować znajomych z
ResponseCode.ResolutionRequired
, jeśli użytkownik nie udostępnił swojej listy znajomych
z grą. W takim przypadku użyj polecenia AskForLoadFriendsResolution
, aby wysłać prośbę
dostęp.
Pobierz nazwy graczy
Każdy wynik zawiera identyfikator użytkownika, który utworzył wynik. Za pomocą
Social.LoadUsers()
, aby wczytać profil gracza. Pamiętaj, że treść
profilu gracza podlegają ustawieniom prywatności graczy.
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);
});
}