本主题介绍了如何设置 Unity 项目,以使用适用于 Unity 的 Google Play 游戏插件。这些任务包括设置项目、选择社交平台,以及设置玩家登录。

准备工作

安装插件

  current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage

通过 Play 管理中心获取 Android 资源

您在 Play 管理中心内创建的每个成就、排行榜和活动都包含您在设置 Unity 项目时使用的 Android 资源。

  1. 获取游戏所用的 Android 资源。

    1. 在 Play 管理中心内,打开游戏的 Play 游戏服务项目。

    2. 点击成就标签页,然后点击获取资源

    3. Export resources 窗口中,点击 Android 标签页。

    4. 选择并复制 XML 内容。

设置 Unity 项目

  1. 将 Android 资源添加到 Unity 项目。

    1. 在 Unity 中,依次点击 **Window > Google Play Games > Setup... > Android Setup**。

    2. 在设置窗口中完成以下项目:

    3. Directory to save constants:常量文件的文件夹。

    4. Constants class name:要创建的 C# 类的名称,包括命名空间。

    5. Resources Definition:从 Play 管理中心复制 Android 资源数据,然后粘贴到此处。

    6. Web client ID:关联的 Web 应用的客户端 ID。只有在游戏具有基于网络的后端并且后端服务器需要用服务器授权代码来换取访问令牌时,或者您需要 ID 令牌来让玩家进行其他非游戏 API 调用时,才需要该 ID。

    7. 点击 Setup。系统会使用客户端 ID 配置游戏,并生成一个 C# 类,其中包含每项 Android 资源的常量。

Android 设置

在 Unity 中设置 Android SDK 安装路径。此设置位于“Preferences”菜单的 External Tools 部分下。

若要将您的 Unity 游戏配置为使用 Android 版 Google Play 游戏运行,请先打开 Android SDK 管理器,验证您是否已下载以下软件包。组件的名称可能会有所不同,具体取决于您使用的是 Android Studio 中的 SDK 管理器,还是独立 SDK 管理器。- 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 设置屏幕。

.AwesomeGame.GPGSIds

粘贴资源定义数据。这是来自 Google Play 管理中心的 XML 数据,其中包含资源 ID 以及 Android 的应用 ID。

在 Google Play 管理中心内的任何资源页面(例如“成就”或“排行榜”)上点击“获取资源”,然后点击“Android”,即可获取这些数据。

将数据粘贴到文本区域后,点击 Setup 按钮。

注意:如果您的游戏使用 Web 应用或后端服务器,您可以将 Web 应用与游戏相关联,以便获取玩家的 ID 令牌和/或电子邮件地址。为此,请在 Google Play 管理中心内将 Web 应用与游戏相关联,然后在设置对话框中输入 Web 应用的客户端 ID。

有关在 Windows 上针对 Android 构建项目的其他说明

如果您使用的是 Windows,则必须确保 Unity 可访问您安装的 Java SDK。具体方法如下:

C:\Program Files\Java\jdk1.7.0_45binPATHC:\Program Files\Java\jdk1.7.0_45\bin

如何修改环境变量:在 Windows 2000/XP/Vista/7 中,右键点击我的电脑,选择属性,接着进入高级系统属性(或进入系统属性并点击高级标签页),然后点击环境变量)。在 Windows 8 上,按 Windows 键 + W 键,然后搜索环境变量。如需了解详情,请参阅您所用 Windows 版本的文档。

运行项目

如果您使用的是冒烟测试示例,此时应该能够构建并运行项目。冒烟测试启动时,您会看到自动登录尝试。

若要在 Android 平台上构建并运行项目,请依次点击 File > Build Settings,选择 Android 平台,然后选择 Switch to Platform,点击 Build and Run

选择社交平台

Google Play 游戏插件实现了 Unity 的 Social 接口,以便与那些在与其他平台集成时就已使用该接口的游戏兼容。但是,有些功能是 Play 游戏所独有的,并作为由 Unity 提供的标准 Social 接口的扩展提供。

您可以通过 Social.Active 对象(它是对 ISocialPlatform 接口的引用)访问标准 API 调用。您可以将 Social.Active 对象转换为 PlayGamesPlatform 类(其中提供其他方法),然后借此访问非标准 Google Play 游戏扩展。

使用插件而不替换默认社交平台

PlayGamesPlatform.ActivateSocialSocial.Active

不过,如果您出于某些原因而需要继续访问默认实现(例如,需要使用默认实现向其他社交平台提交成就和排行榜),可以使用 Google Play 游戏插件而不替换默认实现。具体方法如下:

PlayGamesPlatform.ActivateSocialXyzSocial.XyzPlayGamesPlatform.Instance.XyzSocial.ActivePlayGamesPlatform.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
    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 的 Social 平台,您也可以改用以下代码:

  using GooglePlayGames;

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

检索服务器身份验证代码

若要代表当前玩家在后端网络服务器上访问 Google API,您需要从客户端应用获取身份验证代码,然后将其传递给您的网络服务器应用。然后,可以使用该代码换取访问令牌,以便调用各种 API。如需了解该工作流,请参阅适用于网站的 Google 登录。

如需获取服务器端访问代码,请执行以下操作:

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

设置和添加功能

  • 启用 Play 游戏服务功能。

  • 使用 Play 游戏服务 API 为游戏添加功能: