Google Play 登录 Unity

0 android unity-game-engine google-play-games

我正在尝试集成 Google play 服务,以便我可以在游戏中获得成就和排行榜。我尝试了以下代码 -

public Text myText;

void Awake()
{
    PlayGamesPlatform.Activate();
}

public void SignIN()
{
    Social.localUser.Authenticate((bool Success) => 
    {
        if (Success)
        {
            myText.text = "Yayy!!";
        }
        else
        {
            myText.text = "Not AGAIN!!";
        }
    });
}

public void SignOUT()
{
    PlayGamesPlatform.Instance.SignOut();
    if (Social.localUser.authenticated == false)
    {
        myText.text = "SIGNED OUT!!";
    }
}
Run Code Online (Sandbox Code Playgroud)

其中 SignIN() 和 SignOUT() 在按钮“登录”和“退出”中调用,但我无法登录。我已将 Google Play 开发者控制台中的资源复制粘贴到 Unity 中(窗口 - Google Play 服务 - 设置 - Android)将我的 apk 与开发者控制台上的 GooglePlayServices 链接起来。但是没用,我无法登录,请帮忙。

Nar*_*gam 5

您可以在本地的 Unity 游戏上测试 GPS!

我看到您对该问题的评论已解决,说必须上传并发布 apk 才能使其正常工作。在某种程度上是正确的。但是,如果您每次想要测试 GPS 代码时都想上传 apk,那将是一件痛苦的事情。

这是对我有用的东西,可以在本地测试它,而无需上传到 Google Play Console。

GPS插件版本0.9.50

  • 确保遵循GPS 插件 github上的说明
  • 安装插件之前在系统上正确设置JAVA路径
  • 确保您遵循 Unity 的应用程序签名流程(密钥库、密钥)
  • 为您的游戏和链接的应用程序等设置 Google Play 控制台
  • 上传您的 apk 进行内部测试或 alpha/beta 测试

现在,在您的应用程序 --> 发布管理 --> 应用程序签名下,Google 会用自己的应用程序签名证书替换您的上传证书(您使用 Unity 设置的密钥)。这就是我们直接在设备上运行 apk 时遇到问题的地方。

当在 unity 上点击“构建并运行”并在发布设置中启用密钥库和密钥选项时,您的 apk 将由 unity 直接构建并复制到您的手机。现在,在运行游戏时,GPS 插件将尝试访问 Google Play 服务,但由于 SHA1 不匹配而失败。您的本地 apk 具有上传证书的 SHA1,并且 GPS 正在等待更新的 SHA1 证书(Google 的证书)。

出于测试目的,请将上传证书的 SHA-1 证书指纹从Google Play Console复制到您的Google Developer Console(找到您的应用程序并单击右侧的编辑按钮)

谷歌游戏控制台 谷歌游戏控制台

谷歌开发者控制台 在此输入图像描述

在统一构建设置中,确保使用正确的密码选择密钥库和密钥,然后点击“构建并运行”。请注意,如果您的手机上已经安装了Play商店版本或未烧录版本,请先将其卸载。

在此输入图像描述

现在,每次更新代码时,您无需在 Google Play Console 上上传和发布即可测试 GPS 插件。使用本地上传证书,您可以直接在手机上进行测试,效果与正常测试一样。

重要提示:测试后,您需要将 SHA1 恢复为 Google 的 SHA1,以使您的 GPS 在发布版本(Playstore 版本)上正常工作。除非您将上传密钥 SHA1 保留在 Google 开发者控制台下,否则游戏的 Playstore 版本将无法访问 GPS。

GPS服务代码(我也启用了云服务),

void InitGooglePlatform()
{
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().EnableSavedGames().Build();
    PlayGamesPlatform.InitializeInstance(config);
    PlayGamesPlatform.DebugLogEnabled = true;
    PlayGamesPlatform.Activate();
    if(!bGoogleCheck)       // internal flag to do this only once if user is offline
        GoogleSignin();
    bGoogleCheck = true;    // Mark it done until the game is restarted again
}
public void GoogleSignin()
{
    if (!Social.localUser.authenticated)
    {
        Social.localUser.Authenticate(success => {
            if(success)
            {
                OpenSave(false);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)