Z tego dokumentu dowiesz się, jak skonfigurować projekt Unity, aby korzystać z wtyczki Gry Google Play do silnika Unity. Dowiesz się, jak zainstalować wtyczkę i skonfigurować projekt Unity. Opisujemy też, jak zweryfikować usługę uwierzytelniania.
Zanim zaczniesz
Zapoznaj się z wymaganiami dotyczącymi oprogramowania. Skonfiguruj Konsolę Play i zainstaluj edytor Unity.
Skonfiguruj Konsolę Play na potrzeby swojej gry.
Zainstaluj edytor Unity i skompiluj grę w Unity.
Instalowanie wtyczki
Aby pobrać i zainstalować wtyczkę Gry Google Play do silnika Unity, wykonaj te czynności w edytorze Unity:
Pobierz repozytorium GitHub.
W katalogu
current-buildznajdź plikunitypackage. Ten plik reprezentuje wtyczkę. Powinien wyglądać np. tak:current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
Konfigurowanie projektu Unity
Aby skonfigurować projekt Unity w ustawieniach odtwarzacza:
Otwórz projekt gry.
W edytorze Unity kliknij Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet), aby zaimportować plik
unitypackagedo zasobów projektu.Upewnij się, że bieżąca platforma kompilacji jest ustawiona na Android.
W menu głównym kliknij File > Build Settings (Plik > Ustawienia kompilacji).
Wybierz Android i kliknij Switch Platform (Zmień platformę).
W menu Window > Google Play Games (Okno > Gry Google Play) powinien pojawić się nowy element. Jeśli go nie ma, odśwież zasoby, klikając Assets > Refresh (Zasoby > Odśwież), a następnie ponownie ustaw platformę kompilacji.
W edytorze Unity kliknij File > Build Settings > Player Settings > Other Settings (Plik > Ustawienia kompilacji > Ustawienia odtwarzacza > Inne ustawienia).
W polu Target API level (Docelowy poziom interfejsu API) wybierz wersję.
W polu Scripting backend (Backend skryptów) wpisz
IL2CPP.W polu Target architectures (Docelowe architektury) wybierz wartość.
Zanotuj nazwę pakietu package_name.Te informacje możesz wykorzystać później.
Tworzenie nowego magazynu kluczy
Aby zweryfikować dane logowania, potrzebujesz klucza. Wykonaj te czynności:
- W edytorze Unity kliknij File > Build settings > Player settings (Plik > Ustawienia kompilacji > Ustawienia odtwarzacza).
- W sekcji Publishing settings (Ustawienia publikowania) kliknij Keystore manager (Menedżer magazynu kluczy).
- W oknie Keystore manager (Menedżer magazynu kluczy) kliknij Keystore > Create new > Anywhere (Magazyn kluczy > Utwórz nowy > W dowolnym miejscu).
- Wybierz folder i podaj nazwę magazynu kluczy.
- W polu Password (Hasło) wpisz hasło i potwierdź je.
- Kliknij Add key (Dodaj klucz).
Zanotuj nazwę folderu. Możesz jej użyć do utworzenia danych logowania w Google Cloud.
Kopiowanie zasobów Androida z Konsoli Play
Aby uzyskać zasoby Androida dla swojej gry:
W Konsoli Google Play, otwórz grę.
Na stronie Usługi gier Play – konfiguracja (Rozwój > Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja), kliknij Pobierz zasoby.
W oknie Zasoby kliknij kartę Android(XML).
Zaznacz i skopiuj zawartość zasobów Androida (
AndroidManifest.xml).
Dodawanie zasobów Androida do projektu Unity
Dodaj te zasoby Androida do projektu Unity:
W edytorze Unity kliknij Window > Google Play Games > Setup > Android Setup (Okno > Gry Google Play > Konfiguracja > Konfiguracja Androida).
- W polu Directory to save constants (Katalog do zapisywania stałych) wpisz nazwę folderu na plik stałych.
W polu Constants class name (Nazwa klasy stałych) wpisz nazwę klasy C#, która ma zostać utworzona, w tym przestrzeń nazw.
Jeśli np. klasa C# to
id.csi znajduje się w Assets > myproject > scripts > id.cs (Zasoby > mójprojekt > skrypty > id.cs). Nazwa klasy stałych może byćmyproject.scripts.id.W polu Resources definition (Definicja zasobów) wklej dane zasobów Androida (plik
AndroidManifest.xml) skopiowane z Konsoli Google Play.Opcjonalnie: w polu Client ID (Identyfikator klienta) wpisz identyfikator klienta połączonej aplikacji internetowej.
Aby uzyskać identyfikator klienta gry w Google Cloud, przeczytaj artykuł Tworzenie identyfikatorów klientów.
Jest to konieczne tylko wtedy, gdy masz backend oparty na internecie dla swojej gry i potrzebujesz kodu autoryzacji serwera, aby wymienić go na token dostępu przez serwer backendu, lub jeśli potrzebujesz tokena identyfikatora gracza do wykonywania innych wywołań interfejsu API niezwiązanych z grą.
Kliknij Setup (Konfiguracja). Spowoduje to skonfigurowanie gry za pomocą identyfikatora klienta i wygenerowanie klasy C#, która zawiera stałe dla każdego z zasobów Androida.
W edytorze Unity kliknij Window > Google Play Games > Setup > Nearby Connections Setup (Okno > Gry Google Play > Konfiguracja > Konfiguracja połączeń w pobliżu).
W polu Nearby connection service ID (Identyfikator usługi połączeń w pobliżu) wpisz package_name.
Użyj tej samej package_name, której używasz podczas konfigurowania projektu Unity.
Kliknij Setup (Konfiguracja).
Wybieranie platformy społecznościowej
Wtyczka usług Gier Google Play implementuje interfejs społecznościowy Unity , co zapewnia zgodność z grami, które już używają tego interfejsu podczas integracji z innymi platformami. Niektóre funkcje są jednak dostępne tylko w Grach Play i są oferowane jako rozszerzenia standardowego interfejsu społecznościowego udostępnianego przez Unity.
Standardowe wywołania interfejsu API są dostępne za pomocą obiektu Social.Active , który jest odwołaniem do interfejsu ISocialPlatform. Rozszerzenia usług gier Google Play, które nie są standardowe, są dostępne przez rzutowanie obiektu Social.Active na klasę PlayGamesPlatform , w której dostępne są dodatkowe metody.
Korzystanie z wtyczki bez zastępowania domyślnej platformy społecznościowej
Gdy wywołasz
PlayGamesPlatform.Activate,
usługi gier Google Play staną się domyślną implementacją platformy społecznościowej. Oznacza to
że wtyczka usług Gier Google Play wykonuje statyczne wywołania metod w Social i
Social.Active, co jest oczekiwanym zachowaniem w przypadku większości gier korzystających z wtyczki.
Jeśli jednak z jakiegoś powodu chcesz zachować dostęp do domyślnej implementacji (np. aby używać jej do przesyłania osiągnięć i tabel wyników na inną platformę społecznościową), możesz użyć wtyczki usług Gier Google Play bez zastępowania domyślnej implementacji. Aby to zrobić:
- Wywołaj metodę
PlayGamesPlatform.Activate. - Jeśli
Xyzto nazwa metody, którą wywołujesz w klasieSocial, nie wywołujSocial.Xyz. Zamiast tego wywołajPlayGamesPlatform.Instance.Xyz. - Podczas interakcji z usługami gier Google Play używaj właściwości
PlayGamesPlatform.InstancezamiastSocial.Active.
Dzięki temu możesz jednocześnie przesyłać wyniki i osiągnięcia na 2 lub więcej platform społecznościowych:
// Submit achievement to original default social platform
Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);
// Submit achievement to Google Play
PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);
Weryfikowanie usługi uwierzytelniania
Po otwarciu gry automatycznie podejmowana jest próba połączenia z usługami gier Play za pomocą uwierzytelniania platformy. Jeśli połączenie się powiedzie, gra wyświetli prośbę o zalogowanie i będzie gotowa do użycia wtyczki usług Gier Google Play do silnika Unity.
Jeśli użytkownik nigdy nie korzystał z usług gier Google Play na swoim urządzeniu, automatycznie wyświetli się ekran jednorazowej konfiguracji, na którym będzie mógł utworzyć konto w Grach Play.
W metodzie Start skryptu nasłuchuj wyniku automatycznej próby uwierzytelnienia, pobierz stan uwierzytelnienia i wyłącz funkcje usług gier Play, jeśli użytkownik nie jest uwierzytelniony.
Jeśli wersja wtyczki Unity jest starsza niż v11, nie możesz korzystać z funkcji uwierzytelniania.
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
internal void ProcessAuthentication(SignInStatus status) {
if (status == SignInStatus.Success) {
// Continue with Play Games Services
} else {
// Disable your integration with Play Games Services or show a login button
// to ask users to authenticate. Clicking it should call
// PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
}
}
Kod wyniku to wyliczenie, którego możesz użyć do określenia przyczyny niepowodzenia uwierzytelnienia.
Jeśli wolisz korzystać z platformy społecznościowej Unity, możesz użyć tego kodu:
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Activate();
Social.localUser.Authenticate(ProcessAuthentication);
}
Dopóki nie uzyskasz wartości zwracanej Authenticate, nie możesz wykonywać żadnych wywołań interfejsu API usług gier Google Play. Dlatego zalecamy, aby gry wyświetlały ekran gotowości do czasu wywołania funkcji zwrotnej, aby użytkownicy nie mogli rozpocząć gry, dopóki nie zakończy się uwierzytelnianie.
Zapobieganie automatycznemu tworzeniu profilu
W pliku manifestu możesz wyłączyć prośby o automatyczne utworzenie profilu. Dzięki temu użytkownicy bez profilu usług gier Play mogą nadal wczytywać grę bez wyświetlania prośby o utworzenie profilu usług gier Play. Więcej informacji znajdziesz w sekcji Opcje tworzenia profilu.
Aby korzystać z tej funkcji, upewnij się, że spełnione są te warunki:
- Na urządzeniu nie ma profilu usług gier Play na żadnym z zalogowanych kont Google.
- Twoja gra jest zintegrowana z usługami gier Play
wtyczką do silnika Unity
2.1.0lub nowszej.
W pliku
AndroidManifest.xmldodaj tagcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONw elemencie<meta-data>oraz atrybuty do elementu<application>:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>
Ustawienie tej flagi na true informuje usługi gier Play, że gra będzie obsługiwać proces tworzenia profilu. W związku z tym usługi gier Play nie będą automatycznie wyświetlać interfejsu tworzenia profilu użytkownikom na urządzeniu, którzy nie mają profilu usług gier Play.
Aby obsługiwać przypadki, w których użytkownik nie jest uwierzytelniony z powodu braku profilu usług gier Play, możesz użyć metody PlayGamesPlatform.Instance.IsAuthenticated(). Ta metoda zwraca
falseponieważ tworzenie profilu nie powiodło się. Aby rozwiązać ten problem, rozpocznij proces tworzenia profilu wywołując metodę PlayGamesPlatform.Instance.ManuallyAuthenticate().if (!PlayGamesPlatform.Instance.IsAuthenticated()) { // The user is unauthenticated, likely due to a missing Play Games profile. // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger // the profile creation UI. PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => { // ... }); }Po dodaniu tagu wyciszenia użyj okna
logcat, aby sprawdzić, czy został dodany. Dane wyjściowelogcatzawierają komunikat podobny do tego: „Game opted out of automatic profile creation prompt (using manifest)” (Gra zrezygnowała z automatycznego wyświetlania prośby o utworzenie profilu – używa manifestu).
Używanie podpisywania aplikacji przez Google Play
Google zarządza kluczem podpisywania Twojej aplikacji i zabezpiecza go za Ciebie za pomocą podpisywania aplikacji przez Google Play. Możesz używać podpisywania aplikacji przez Google Play do podpisywania zoptymalizowanych plików Android App Bundle na potrzeby dystrybucji. Usługa podpisywania aplikacji przez Google Play przechowuje Twój klucz podpisywania aplikacji w bezpiecznej infrastrukturze Google. Aby korzystać z podpisywania aplikacji przez Google Play, musisz najpierw utworzyć i pobrać plik AAB z edytora Unity. Następnie możesz przesłać plik AAB do Konsoli Play i utworzyć wewnętrzną wersję testową.
Tworzenie pliku AAB
Aby utworzyć plik AAB w edytorze Unity:
- W edytorze Unity kliknij File > Build settings (Plik > Ustawienia kompilacji).
Wybierz Build App Bundle ( Google Play ) (Skompiluj pakiet aplikacji – Google Play).
Więcej informacji znajdziesz w artykule Ustawienia kompilacji na Androida.
Kliknij Build (Skompiluj).
Pobierz plik AAB z edytora Unity.
Tworzenie wewnętrznej wersji testowej
Aby utworzyć wewnętrzną wersję testową i dodać testerów w Konsoli Play:
- W Konsoli Google Play, wybierz grę.
- Otwórz stronę Testowanie i publikowanie (Testowanie > Test wewnętrzny).
- Kliknij Prześlij i wybierz plik AAB.
- W polu Szczegóły wersji wpisz nazwę.
- Kliknij Dalej i sprawdź szczegóły wersji.
- Kliknij Zapisz i opublikuj.
Na karcie Testerzy kliknij Utwórz listę e-mailową, aby dodać maksymalnie 100 testerów.
Więcej informacji znajdziesz w artykule Test wewnętrzny: zarządzanie maksymalnie 100 testerami.
W polu URL lub adres e-mail do przesyłania opinii wpisz URL lub adres e-mail, na który mają być przesyłane opinie.
Kliknij Zapisz.
Sprawdzanie danych logowania do podpisywania aplikacji
- W Konsoli Google Play, wybierz grę.
- Otwórz stronę Testowanie i publikowanie (Konfiguracja > Podpisywanie aplikacji).
- Sprawdź dane logowania do podpisywania aplikacji.
Kompilowanie i uruchamianie projektu
W tym momencie możesz skompilować i uruchomić projekt gry. Po uruchomieniu gry zobaczysz automatyczną próbę uwierzytelnienia.
Potrzebujesz fizycznego urządzenia z Androidem, na którym włączone jest debugowanie USB, lub emulatora, który może uruchomić opracowany projekt.
Pobieranie kodów uwierzytelniania serwera
Aby uzyskać dostęp do interfejsów API Google na serwerze backendu w imieniu bieżącego gracza, musisz pobrać kod uwierzytelniania z aplikacji klienckiej i przekazać go do aplikacji serwera WWW. Kod można następnie wymienić na token dostępu, aby wywoływać różne interfejsy API. Informacje o przepływie pracy znajdziesz w artykule Zaloguj się przez Google w internecie.
Aby uzyskać kod dostępu po stronie serwera:
- Dodaj identyfikator klienta internetowego swojej gry w Konsoli Play.
- W Konsoli Google Play, wybierz grę.
- Na stronie Konfiguracja (Rozwój > Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja) kliknij Dodaj dane logowania.
- Na stronie Dodaj dane logowania kliknij Serwer gry.
- Wygeneruj identyfikator klienta OAuth 2.0.
- Zanotuj wartość identyfikatora klienta. Będziesz musiał podać tę wartość później.
Dodaj identyfikator klienta internetowego do Unity Hub.
- W Unity Hub skonfiguruj Gry Google Play do silnika Unity i uwierzytelnij się.
- W Unity Hub kliknij Window > Google Play Games > Setup > Android Setup (Okno > Gry Google Play > Konfiguracja > Konfiguracja Androida).
- Wpisz wartość identyfikatora klienta.
Pobierz kod autoryzacji serwera dla dodatkowych zakresów.
C#
using GooglePlayGames.BasicApi; // Define selectedScope having additional identity scopes. private List
selectedScopes = new List (); // Add scopes you want to request. selectedScopes.Add(AuthScope.OPEN_ID); selectedScopes.Add(AuthScope.PROFILE); selectedScopes.Add(AuthScope.EMAIL); // Call RequestServerSideAccess with additional scopes and retrieve // authcode and grantedscopes list. PlayGamesPlatform.Instance.RequestServerSideAccess( /* forceRefreshToken= */ false,selectedScopes (AuthResponse authResponse) => { string authCode = authResponse.GetAuthCode(); List grantedScopes = authResponse.GetGrantedScopes(); // send authCode to server... });
Konfigurowanie i dodawanie funkcji
Włącz funkcje usług gier Play.
Dodaj funkcje do gry za pomocą interfejsów API usług gier Play:
Interfejs Recall API do silnika Unity (obsługiwany tylko w przypadku wtyczki Unity w wersji 11 lub nowszej)