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

Stay organized with collections Save and categorize content based on your preferences.

本主題將說明如何設定 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」(Google Play 遊戲) 下方應該會顯示新的選單項目。如果沒有的話,請點選「Assets」(資產) >「Refresh」(重新整理) 以重新整理資產,然後嘗試重新設定建構平台。

從 Play 管理中心取得 Android 資源

您在 Play 管理中心建立的所有成就、排行榜及事件都會內含您在設定 Unity 專案時使用的 Android 資源。

  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」(Google Play 遊戲) >「Setup…」(設定…)>「Android Setup」(Android 設定)**。

    2. 填寫以下設定視窗項目:

    3. 「Directory to save constants」(儲存常數的目錄):常數檔案資料夾。

    4. 「Constants class name」(常數類別名稱):要建立的 C# 類別名稱,包括命名空間。

    5. 「Resources Definition」(資源定義):從 Play 管理中心複製 Android 資源資料,然後貼到此處。

    6. 「Web client ID」(網路用戶端 ID):已連結網頁應用程式的用戶端 ID,只有在兩種情況下才必須使用這類 ID:第一種情況是遊戲使用網頁式後端伺服器,而且必須由後端伺服器將伺服器驗證碼換成存取權杖,另一種是您要使用玩家的 ID 權杖進行其他非遊戲 API 呼叫。

    7. 按一下「Setup」(設定)。這樣做便會用用戶端 ID 設定遊戲,並產生含有各 Android 資源常數的 C# 類別。

Android 設定

在 Unity 內設定 Android SDK 安裝路徑。位於偏好設定選單的「External Tools」(外部工具) 區段內。

若要設定 Unity 遊戲,使其可用 Android 的 Google Play 遊戲運作,請先開啟 Android SDK Manager 並確認已下載這些套件。根據您使用的是 Android Studio 的 SDK Manager,還是獨立的 SDK 管理工具,元件名稱可能會不一樣。- Google Play 服務 - Android 支援資料庫 - 支援資料庫的本機 Maven 存放區 (也稱做 Android 支援存放區) - Google 存放區 - Android 6.0 (API 23) (這不會影響最低 SDK 版本)。

接下來,請設定遊戲的套件名稱。想設定套件名稱,請按一下「File」(檔案) >「Build Settings」(建構設定) 然後點選「Android」平台和「Player Settings」(玩家設定),開啟 Unity 玩家設定視窗。在該視窗中尋找「Other Settings」(其他設定) 下的「Bundle Identifier」(軟體包 ID) 設定。在該處輸入套件名稱 (例:com.example.my.awesome.game)。

如果想登入 Play 遊戲服務,則需要簽署 APK 檔案,請確定您使用正確的憑證簽署,也就是和您在 Play 管理中心設定時所輸入的 SHA1 憑證指紋相關的憑證。

然後請按一下「WIndow」(視窗) |「Google Play Games」(Google Play 遊戲) |「Setup - Android setup」(設定 - Android 設定) 選單項目。系統會顯示 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)
  3. 重新啟動。

如何編輯環境變數:若使用 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);

檢查登入服務

系統會自動在遊戲開啟後建立遊戲服務連線。連線成功後,系統會顯示彈出式視窗歡迎玩家,您的遊戲也可以開始使用 Games Unity 外掛程式。

在指令碼的 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 成功回傳值之前,您無法進行任何遊戲 API 呼叫 (解鎖成就、張貼得分等),因此建議您在呼叫回呼之前顯示一個準備畫面,確保使用者無法在完成驗證程序之前就開始玩遊戲。

擷取伺服器驗證碼

您需要從用戶端應用程式取得驗證碼,然後把這組驗證碼傳遞給您的網路伺服器應用程式,才能代表目前玩家存取後端網路伺服器的 Google API。然後,系統便可以把這組驗證碼交換成存取權杖,以便呼叫多種 API。有關工作流程表的資訊請參閱「網站使用的 Google 登入」。

若要取得伺服器端的存取碼:

  1. 前往 Play 遊戲管理中心,然後為您連結到遊戲的網頁應用程式設定網頁用戶端 ID。

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

  3. 將此代碼傳遞至伺服器應用程式。

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

設定並新增功能