Pierwsze kroki z wtyczką Gier Google Play do Unity

Z tego artykułu dowiesz się, jak skonfigurować projekt w Unity, by używać wtyczki Gier Google Play dla Unity. Te zadania obejmują konfigurację projektu, wybór platformy społecznościowej i konfigurację logowania się gracza.

Zanim zaczniesz

Instalacja wtyczki

  1. Pobierz wtyczkę, korzystając z jednej z poniższych opcji:

  2. Znajdź plik unitypackage w katalogu current-build. Ten plik to wtyczka. Na przykład powinien wyglądać podobnie do tego:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    
  3. Otwórz projekt gry w Unity.

  4. Zaimportuj plik unitypackage do zasobów projektu, klikając opcję menu Zasoby > Importuj pakiet > Pakiet niestandardowy.

  5. Sprawdź, czy bieżąca platforma kompilacji to Android.

    1. W menu głównym kliknij Plik > Ustawienia kompilacji...

    2. Wybierz Android i kliknij Przełącz platformę.

    3. W menu Okno > Gry Google Play powinna pojawić się nowa pozycja. Jeśli nie, odśwież zasoby, klikając Zasoby > Odśwież, a następnie spróbuj ponownie ustawić platformę kompilacji.

Pobierz zasoby dotyczące Androida z Konsoli Play

Każde osiągnięcie, tabela wyników i wydarzenie utworzone przez Ciebie w Konsoli Play obejmują zasób Androida potrzebny do konfigurowania projektu Unity.

  1. Pobierz zasoby Androida do swojej gry.

    1. W Konsoli Play otwórz projekt w usługach gier Play odpowiadający Twojej grze.

    2. Kliknij kartę Osiągnięcia, a następnie Pobierz zasoby.

    3. W oknie Eksportowanie zasobów kliknij kartę Android.

    4. Zaznacz i skopiuj zawartość XML.

Konfigurowanie projektu w Unity

  1. Dodaj zasoby Androida do projektu Unity.

    1. W Unity kliknij ** Okno > Gry Google Play > Konfiguracja... > Konfiguracja Androida **.

    2. Wykonaj te czynności w oknach konfiguracji:

    3. Katalog do zapisywania stałych: folder na plik stałych.

    4. Nazwa klasy stałych: nazwa klasy C# do utworzenia wraz z przestrzenią nazw.

    5. Definicja zasobów: tutaj wklej dane zasobów Androida z Konsoli Play.

    6. Identyfikator klienta internetowego: identyfikator klienta połączonej aplikacji internetowej. Jest on potrzebny tylko wtedy, gdy masz internetowy backend swojej gry i potrzebujesz kodu autoryzacji serwera, by wymienić token dostępu przez serwer backendu, lub gdy potrzebujesz tokena identyfikatora do wykonywania innych wywołań interfejsu API spoza gry.

    7. Wybierz Konfiguracja. Pozwala to skonfigurować grę przy użyciu identyfikatora klienta i wygenerować klasę C#, która zawiera stałe dla każdego zasobu Androida.

Konfiguracja Androida

Skonfiguruj ścieżkę do instalacji pakietu Android SDK w Unity. Znajdziesz go w menu ustawień w sekcji External Tools (Narzędzia zewnętrzne).

Aby skonfigurować grę na Unity do działania z Grami Google Play na Androida, najpierw otwórz menedżera pakietów SDK Androida i sprawdź, czy zostały pobrane te pakiety. Nazwy komponentów mogą się różnić w zależności od tego, czy korzystasz z menedżera pakietów SDK w Android Studio, czy też z samodzielnego menedżera pakietów SDK. – Usługi Google Play – Biblioteka pomocy Androida – Lokalne repozytorium Maven na potrzeby bibliotek pomocy technicznej (znane też jako Repozytorium pomocy Androida) – Repozytorium Google – Android 6.0 (API 23) (nie ma wpływu na minimalną wersję pakietu SDK).

Następnie skonfiguruj nazwę pakietu gry. Aby to zrobić, kliknij Plik > Ustawienia kompilacji, wybierz platformę Android i kliknij Ustawienia odtwarzacza, aby wyświetlić okno ustawień odtwarzacza w Unity. W tym oknie odszukaj ustawienie Identyfikator pakietu w sekcji Inne ustawienia. Wpisz tam nazwę pakietu (np. com.example.my.awesome.game).

Jeśli chcesz zalogować się w usługach gier Play, musisz podpisać plik APK i upewnić się, że jest on podpisany odpowiednim certyfikatem, czyli zgodnym z odciskiem cyfrowym certyfikatu SHA1 wpisanym w konsoli programisty podczas konfiguracji.

Następnie kliknij pozycję menu Okno |Gry Google Play|Konfiguracja – konfiguracja Androida. Pojawi się ekran konfiguracji Androida.

Wpisz nazwę klasy „Constants” (Stałe). Jest to nazwa w pełni kwalifikowanej klasy, która zostanie zaktualizowana (lub utworzona), zawierająca identyfikatory zasobów gry. Format nazwy to <namespace>.<classname>. Przykład: AwesomeGame.GPGSIds

Wklej dane definicji zasobu. Są to dane XML z Konsoli programisty Google Play, które zawierają identyfikatory zasobów oraz identyfikator aplikacji na Androida.

Te dane znajdziesz w Konsoli programisty Google Play, gdy klikniesz „Pobierz zasoby” na dowolnej stronie zasobu (np. Osiągnięcia lub Tabele wyników), a potem klikniesz Android.

Po wklejeniu danych w obszarze tekstowym kliknij przycisk Konfiguracja.

Uwaga: jeśli z grą korzystasz z aplikacji internetowej lub serwera backendu, możesz połączyć tę aplikację z grą, aby umożliwić uzyskanie tokena identyfikatora gracza lub adresu e-mail. Aby to zrobić, połącz aplikację internetową z grą w Konsoli programisty Google Play i wpisz identyfikator klienta aplikacji internetowej w oknie konfiguracji.

Dodatkowe instrukcje dotyczące tworzenia aplikacji na Androida w systemie Windows

Jeśli używasz systemu Windows, upewnij się, że Unity ma dostęp do instalacji pakietu SDK Java. Aby wykonać te działania:

  1. Ustaw zmienną środowiskową JAVA_HOME na ścieżkę instalacji pakietu Java SDK (np. C:\Program Files\Java\jdk1.7.0_45).
  2. Dodaj folder bin pakietu Java SDK do zmiennej środowiskowej PATH (np. C:\Program Files\Java\jdk1.7.0_45\bin)
  3. Zrestartuj.

Jak edytować zmienne środowiskowe: w systemie Windows 2000/XP/Vista/7 kliknij prawym przyciskiem myszy Mój komputer, a następnie Właściwości i wybierz Zaawansowane właściwości systemowe (lub Właściwości systemu, a następnie kartę Zaawansowane) i Zmienne środowiskowe. W systemie Windows 8 naciśnij klawisz Windows + W i wyszukaj zmienne środowiskowe. Więcej informacji znajdziesz w dokumentacji używanej wersji systemu Windows.

Uruchom projekt

Jeśli korzystasz z przykładu Smoketest, możesz już skompilować i uruchomić projekt. Gdy uruchomi się aplikacja Smoketest, zobaczysz próbę logowania automatycznego.

Aby skompilować i uruchomić aplikację na Androidzie, kliknij Plik > Ustawienia kompilacji, wybierz platformę Android, a potem kliknij Przełącz na platformę i Skompiluj i uruchom.

Wybierz platformę społecznościową

Wtyczka Gier Google Play implementuje interfejs społecznościowy Unity, aby zapewnić zgodność z grami, które już korzystają z 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 odniesieniem do interfejsu I SocialPlatform. Dostęp do niestandardowych rozszerzeń Gier Google Play można uzyskać, przesyłając obiekt social.Active do klasy PlayGamesPlatform, gdzie dostępne są dodatkowe metody.

Używaj wtyczki bez zastępowania domyślnej platformy społecznościowej

Gdy wywołasz PlayGamesPlatform.Activate, Gry Google Play stają się Twoją domyślną implementacją platformy społecznościowej, co oznacza, że statyczne wywołania metod w Social i Social.Active będą wykonywane przez wtyczkę Gier Google Play. Jest to pożądane działanie w przypadku większości gier korzystających z tej wtyczki.

Jeśli jednak z jakiegoś powodu chcesz zachować dostęp do domyślnej implementacji (np. by używać jej do przesyłania osiągnięć i tabel wyników na inną platformę społecznościową), możesz użyć wtyczki Gier Google Play bez zastępowania domyślnej. Aby wykonać te działania:

  1. Nie dzwoń do: PlayGamesPlatform.Activate
  2. Jeśli Xyz to nazwa metody, którą chcesz wywoływać w klasie Social, nie wywołuj Social.Xyz. Zamiast tego zadzwoń pod numer PlayGamesPlatform.Instance.Xyz
  3. Nie używaj Social.Active podczas interakcji z Grami Google Play. Zamiast tego użyj elementu PlayGamesPlatform.Instance.

W ten sposób możesz nawet przesyłać wyniki i osiągnięcia jednocześnie na co najmniej 2 platformy społecznościowe:

    // 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 logowania

Gdy gra jest otwarta, automatycznie próbuje się połączyć z usługami gier Play przez usługę logowania. Jeśli uda się nawiązać połączenie, gra wyświetli prośbę o zalogowanie się i będzie gotowa do użycia wtyczki Gier Google Play dla Unity.

Jeśli użytkownik nigdy nie korzystał na swoim urządzeniu z Gier Google Play, jest automatycznie otwierany na jednorazowym ekranie konfiguracji, na którym może utworzyć konto Gier Play.

W metodzie Start skryptu nasłuchuj wyniku automatycznej próby logowania, pobierz stan uwierzytelniania i wyłącz funkcje usług gier Play, jeśli użytkownik nie jest zalogowany.

    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 sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }
}

Kod wyniku to wyliczenie, które pozwala zidentyfikować przyczynę niepowodzenia logowania.

Jeśli wolisz korzystać z platformy społecznościowej Unity, możesz też użyć tego kodu:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Nie możesz wykonywać żadnych wywołań interfejsu Google Play Games API, dopóki nie zwrócisz wartości z Authenticate. Dlatego zalecamy, aby gry wyświetlały ekran gotowości do czasu wywołania wywołania zwrotnego. Dzięki temu użytkownicy nie będą mogli rozpocząć grania do czasu zakończenia uwierzytelniania.

Pobieranie kodów uwierzytelniania serwera

Aby uzyskać dostęp do interfejsów API Google na wewnętrznym serwerze WWW w imieniu bieżącego odtwarzacza, musisz uzyskać kod uwierzytelniający z aplikacji klienckiej i przekazać go do swojej aplikacji serwera WWW. Następnie można wymienić go na token dostępu, aby wywoływać różne interfejsy API. Informacje o przepływie pracy znajdziesz w artykule o logowaniu się przez Google w witrynach.

Aby uzyskać kod dostępu po stronie serwera:

  1. Skonfiguruj identyfikator klienta internetowego aplikacji internetowej połączonej z Twoją grą w Konsoli Play.

  2. Wywołaj PlayGamesPlatform.Instance.RequestServerSideAccess po uwierzytelnieniu odtwarzacza, aby uzyskać kod dostępu po stronie serwera.

  3. Przekaż ten kod do aplikacji serwera.

  PlayGamesPlatform.Instance.RequestServerSideAccess(
    /* forceRefreshToken= */ false,
    code -> {
      // send code to server
    });

Konfigurowanie i dodawanie funkcji