開始使用 Unity 專用 Google Play 遊戲外掛程式

本主題將說明如何設定 Unity 專案,以便使用 Unity 專用 Google Play 遊戲外掛程式。相關工作包括設定專案、選擇社群平台,以及設定玩家登入

事前準備

安裝外掛程式

  1. 使用下列其中一個選項取得外掛程式:

  2. current-build 目錄中找到 unitypackage 檔案。這個檔案是外掛程式。範例如下:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    
  3. 在 Unity 中開啟遊戲專案。

  4. 依序點選「Assets」>「Import Package」>「Custom Package」選單項目,將 unitypackage 檔案匯入至專案的資產。

  5. 確認目前的建構平台已設為「Android」

    1. 依序點選主選單的「File」>「Build Settings…」

    2. 選取「Android」,然後點選「Switch Platform」

    3. 「Window」>「Google Play Games」下方應會顯示新的選單項目。如果沒有,請依序點選「Assets」>「Refresh」重新整理資產,然後再次嘗試設定建構平台。

從 Play 管理中心取得 Android 資源

您在 Play 管理中心建立的每個關卡、排行榜和事件都包含一項 Android 資源,您在設定 Unity 專案時使用的是這項資源。

  1. 取得遊戲的 Android 資源。

    1. 在 Play 管理中心開啟遊戲的 Play 遊戲服務專案。

    2. 依序點選「Achievements」分頁標籤 >「Get resources」

    3. 點選「Export resources」視窗中的「Android」分頁標籤。

    4. 選取並複製 XML 內容。

設定 Unity 專案

  1. 將 Android 資源加入 Unity 專案中。

    1. 在 Unity 中,依序點選「Window」>「Google Play Games」>「Setup...」>「Android Setup」**。

    2. 填寫以下設定視窗:

    3. 「Directory tosave 常數」:常數檔案的資料夾。

    4. 常數類別名稱:要建立的 C# 類別名稱,包括命名空間。

    5. 「Resources Definition」:從 Play 管理中心貼上 Android 資源資料。

    6. 網路用戶端 ID:已連結網頁應用程式的用戶端 ID。只有在遊戲有網頁式後端,且需要伺服器驗證碼以透過後端伺服器交換存取權杖,或是您需要 ID 權杖才能讓玩家進行其他非遊戲 API 呼叫時,才需要這麼做。

    7. 點選「Setup」。這樣做會使用用戶端 ID 設定遊戲,並產生 C# 類別,其中包含每個 Android 資源的常數。

Android 設定

在 Unity 中設定指向 Android SDK 安裝的路徑。這項設定位於「External Tools」部分下方的「Preferences」選單中。

如要設定 Unity 遊戲,讓遊戲在 Android 裝置上透過 Google Play 遊戲執行,請先開啟 Android SDK Manager,並確認已下載下列套件。視您使用的是 Android Studio 的 SDK Manager 還是獨立的 SDK Manager,元件名稱可能會不同。- Google Play 服務 - Android 支援資料庫 - 支援資料庫的本機 Maven 存放區 (也稱為 Android 支援存放區) - Google 存放區 - Android 6.0 (API 23) (這不會影響最低 SDK 版本)。

接下來,設定遊戲的套件名稱。方法是依序點選「File」>「Build Settings」,選取「Android」平台,然後按一下「Player Settings」,即可顯示 Unity 的「Player Settings」視窗。在該視窗中,找出「Other Settings」下方的「Bundle Identifier」設定,然後輸入套件名稱 (例如「com.example.my.awesome.game」)。

如要登入 Play 遊戲服務,您必須簽署 APK 檔案,並確保使用正確的憑證簽署,也就是會對應您在設定期間在 Play 管理中心輸入的 SHA1 憑證指紋。

接著,點選「WIndow」| Google Play Games | Setup - Android setup」選單項目。這會顯示 Android 設定畫面。

輸入常數類別名稱。這是要更新 (或建立) 的完整類別名稱,內含遊戲資源 ID。名稱的格式為 <namespace>.<classname>。例如:AwesomeGame.GPGSIds

貼上資源定義資料。這是來自 Google Play 管理中心的 XML 資料,內含 Android 的資源 ID 及應用程式 ID。

在 Google Play 管理中心任何資源頁面 (例如「Achievements」或「Leaderboards」) 中,依序點選「Get resources」>「Android」即可找到這些資料。

將資料貼到文字區域後,按一下「Setup」按鈕。

注意:如果遊戲搭配使用網頁應用程式或後端伺服器,可以將網頁應用程式連結至遊戲,取得玩家的 ID 權杖和/或電子郵件地址,方法是在 Google Play 管理中心將網頁應用程式連結至遊戲,然後在設定對話方塊中輸入網頁應用程式的用戶端 ID。

在 Windows 上針對 Android 環境進行建構的其他說明

如果您使用 Windows,必須確認 Unity 可以存取 Java SDK 安裝項目。如果想:

  1. 將 JAVA_HOME 環境變數設為 Java SDK 安裝路徑 (例如 C:\Program Files\Java\jdk1.7.0_45)。
  2. PATH 環境變數中加入 Java SDK 的 bin 資料夾,例如 C:\Program Files\Java\jdk1.7.0_45\bin

如何編輯環境變數:如果是 Windows 2000/XP/Vista/7,在「我的電腦」上按一下滑鼠右鍵,點選「屬性」,前往「進階系統屬性」(或前往「系統屬性」的「進階」分頁),然後點選「環境變數」。若是 Windows 8,請按下「Windows + W 鍵」,然後搜尋「環境變數」。詳情請參閱所用 Windows 版本的說明文件。

執行專案

如果您正在使用 Smoketest 範例,此時應該已經可以建構並執行專案了。啟動 Smoketest 時,您會看到自動登入嘗試。

如要在 Android 系統上建構並執行,請依序點選「File」>「Build Settings」,然後依序選取「Android」平台 >「Switch to Platform」>「Build and Run」

選擇社群平台

Google Play 遊戲外掛程式會實作 Unity 的社群介面,以便與在其他平台整合時已使用該介面的遊戲相容。但是,有些 Play 遊戲專屬的功能,會以擴充功能的形式給 Unity 提供的標準社群介面使用。

Social.Active 物件是指向 ISocialPlatform 介面的參照,可用來存取標準 API 呼叫。將 Social.Active 物件投放至 PlayGamesPlatform 類別 (可供您使用其他方法),藉此存取非標準 Google Play 遊戲擴充功能。

使用外掛程式而不覆寫預設社群平台

如果呼叫 PlayGamesPlatform.Activate,Google Play 遊戲就會成為您實作的預設社群平台,這表示 Google Play 遊戲外掛程式會對 SocialSocial.Active 中的方法發出靜態呼叫。大多數使用此外掛程式的遊戲都應採取此做法。

不過,如果您出於某些原因需要繼續存取預設的實作 (例如需要用它將成就和排行榜送到其他社群平台),您可以在不覆寫預設值的情況下使用 Google Play 遊戲外掛程式。如果想:

  1. 不要呼叫 PlayGamesPlatform.Activate
  2. 如果想對 Social 類別呼叫名為 Xyz 的方法,請不要呼叫 Social.Xyz,請改為呼叫 PlayGamesPlatform.Instance.Xyz
  3. 與 Google Play 遊戲互動時,請勿使用 Social.Active。請改用 PlayGamesPlatform.Instance

透過這種做法,甚至可以將得分和成就同時提交到兩個以上的社群平台:

    // 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);

驗證登入服務

開啟遊戲時,系統會自動使用登入服務嘗試連線至 Play 遊戲服務。如果連線成功,遊戲就會顯示登入提示,並準備好使用 Unity 的 Google Play 遊戲外掛程式。

如果使用者從未在這部裝置上使用過 Google Play 遊戲,系統會自動引導玩家進行單次設定作業,以便建立 Play 遊戲帳戶。

在指令碼的 Start 方法中監聽自動登入嘗試結果,擷取驗證狀態,以及在使用者未登入時停用 Play 遊戲服務功能。

    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).
      }
    }
}

結果程式碼是一項列舉,以便您找出登入失敗的原因。

如果您偏好使用 Unity 的社群平台,可以改用下列程式碼:

  using GooglePlayGames;

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

您必須先從 Authenticate 取得成功的傳回值,才能進行任何 Google Play 遊戲 API 呼叫。因此,建議遊戲在呼叫回呼之前持續顯示待機畫面,確保使用者先完成驗證才開始玩遊戲。

擷取伺服器驗證碼

您需要從用戶端應用程式取得驗證碼,並傳遞至網路伺服器應用程式,才能代表目前玩家存取後端網路伺服器上的 Google API。接著,系統可用這組驗證碼交換存取權杖,用來呼叫各種 API。如需瞭解工作流程,請參閱適用於網站的 Google 登入功能

如何取得伺服器端存取碼:

  1. 前往 Play 管理中心,設定連結至遊戲的網頁應用程式網路用戶端 ID。

  2. 玩家通過驗證並取得伺服器端的存取碼後,請呼叫 PlayGamesPlatform.Instance.RequestServerSideAccess

  3. 將這組存取碼傳遞至伺服器應用程式。

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

設定並新增功能