版权所有 (c) 2014 Google Inc. 保留所有权利。
适用于 Unity® 的 Google Play 游戏插件是一个开源项目,其目标是提供一个插件,允许游戏开发人员从用 Unity® 编写的游戏中与 Google Play 游戏 API 集成。但是,该项目并未以任何方式得到 Unity Technologies 的认可或监督。
Unity® 是 Unity Technologies 的商标。
iOS 是苹果公司的商标。
请从 Github 发布页面下载该软件包。
Unity 的 Google Play 游戏插件允许您通过 Unity 的社交界面访问 Google Play 游戏 API。该插件为 Google Play Games API 的以下功能提供支持:
登入
朋友们
解锁/显示/增加成就
将分数发布到排行榜
云保存读/写
显示内置成就/排行榜 UI
事件
附近的连接
注意:此版本的插件不再支持 iOS。 适用于 iOS 的 Google Play 游戏服务已被弃用,并且不太可能按预期运行。请勿在新应用中使用适用于 iOS 的 Google Play 游戏服务。有关更多详细信息,请参阅弃用公告博客文章。
特征:
简单的面向 GUI 的项目设置(集成到 Unity GUI 中)
无需覆盖/自定义播放器 Activity
无需覆盖/自定义 AndroidManifest.xml
有关使用该插件的说明,请参阅此开发人员指南。
有关演示如何使用 Google Play Games 的示例应用程序,请参阅 SmokeTest 项目;
如果您已经将您的项目与以前版本的插件集成并希望升级到新版本,请参阅升级说明。
为了代表当前玩家访问后端 Web 服务器上的 Google API,您需要从客户端应用程序获取身份验证代码并将其传递到您的 Web 服务器应用程序。 然后可以将此代码交换为访问令牌以调用各种 API。有关此流程的更多详细信息,请参阅:Google 网站登录。
获取服务器授权码:
在 Play 游戏控制台中配置链接到您的游戏的 Web 应用程序的 Web 客户端 ID。
创建配置时调用PlayGamesClientConfiguration.Builder.RequestServerAuthCode(false)
。
玩家通过身份验证后,调用PlayGamesPlatform.Instance.GetServerAuthCode()
。
将此代码传递到您的服务器应用程序。
PlayGamesPlatform.Instance.RequestServerSideAccess(/* forceRefreshToken= */ false,code -> { // 发送代码到服务器});
通过使用 Proguard 删除您的游戏不使用的 Play 游戏服务功能的代码,可以减小 Play 游戏服务 Unity 插件的大小。 Proguard 将删除游戏中未使用的功能的 Play Games Unity 插件代码,以便您的游戏仅附带所需的代码,并最大限度地减少使用 Play Games 服务对大小的影响。
此外,还可以使用 Unity 的托管代码剥离来减小整个 Unity 项目的大小,这将压缩整个项目。 这可以与 Proguard 结合使用。
转到File > Build Settings > Player Settings
,然后单击Publishing Settings
部分。选择Proguard
for Minify > Release
。然后,启用User Proguard File
。如果您希望该插件也为调试 apk 进行混淆,您可以选择Proguard
for Minify > Debug
。
将 proguard 配置的内容复制到Assets/Plugins/Android/proguard-user.txt
中。
当您调用PlayGamesPlatform.Activate
时,Google Play Games 将成为您的默认社交平台实现,这意味着对Social
和Social.Active
中的方法的静态调用将由 Google Play Games 插件执行。这是大多数使用该插件的游戏所期望的行为。
但是,如果出于某种原因您希望保持默认实现的可访问性(例如,使用它向其他社交平台提交成就和排行榜),您可以使用 Google Play Games 插件,而无需覆盖默认实现。为此:
不要调用PlayGamesPlatform.Activate
如果Xyz
是您希望在Social
类上调用的方法的名称,请勿调用Social.Xyz
。相反,调用PlayGamesPlatform.Instance.Xyz
与 Google Play 游戏交互时请勿使用Social.Active
。相反,请使用PlayGamesPlatform.Instance
。
这样,您甚至可以同时向两个或多个社交平台提交分数和成就:
// 向原默认社交平台提交成就Social.ReportProgress("MyAchievementIdHere", 100.0f,callback);// 向Google PlayPlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f,callback)提交成就;
本节列出了通过编写代码、改进文档或修复错误对此项目做出贡献的人员。
Dgizusse 找出在 Windows 上设置 JAVA_HOME 是必要的。
antonlicht 用于修复支持库上 showErrorDialog 参数类型的错误。
pR0Ps 用于修复 OnAchievementsLoaded 不接受 OPERATION_DEFERRED 结果代码作为成功的问题。
friikyeu 帮助调试导致 API 调用排队而不是在连接时执行的问题。