Unity Google Play服务

时间:2017-10-06 21:50:51

标签: unity3d google-play-services

我正在尝试将Google Play服务纳入我开发的游戏中。这是我在主屏幕上的脚本。我完全没有得到回应。我尝试了所有不同的SHA1代码,我不确定是什么问题。任何想法???

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GooglePlayGames;
using UnityEngine.UI;
using GooglePlayGames.BasicApi;
using UnityEngine.SocialPlatforms;

public class GPS_Main : MonoBehaviour {

    private bool IsConnectedToGoogleServices;
    public Text SignIn;

    private void Awake()
    {
        PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build();
        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.Activate();
    }

    // Use this for initialization
    void Start () {

        LogIn();

    }

    // Update is called once per frame
    void Update () {

    }

    void LogIn()
    {
        Social.localUser.Authenticate(success => { });

    }

    public bool ConnectToGoogleServices()
    {
        if (!IsConnectedToGoogleServices)
        {
            Social.localUser.Authenticate((bool success) =>
            {
                IsConnectedToGoogleServices = success;
            });

        }
        return IsConnectedToGoogleServices;
        }
    public static void ToAchievementUI()
    {
        if (Social.localUser.authenticated)
        {
            Social.ShowAchievementsUI();
        }
        else
        {
            Debug.Log("Not authenticated");
        }
    }
}

这确实是一件令人讨厌的事。我经历了很多视频和书籍,试图找到正确的解决方案。

2 个答案:

答案 0 :(得分:0)

有很多事情导致这种情况发生,找到它的最佳方法是尝试连接手机,然后使用adb logcat查看导致问题的原因。

此外,我在您的函数ConnectToGoogleServices中找到了一个小错误:

public bool ConnectToGoogleServices()
{
    if (!IsConnectedToGoogleServices)
    {
        Social.localUser.Authenticate((bool success) =>
        {
            IsConnectedToGoogleServices = success;
        });

    }
    return IsConnectedToGoogleServices;
}

此函数始终返回IsConnectedToGoogleServices初始状态。

答案 1 :(得分:0)

我在这篇文章Google Play Sign in for Unity 中尝试了一些解释,但是我无法从您的问题中了解您尝试过的所有选项以及您遇到问题的方法。我写这篇文章的时候有6个月的问题。希望你已经对此进行了整理。如果是这样,请在此发布可能对其他人有帮助的发现。

对于任何登陆此问题的人,如果对您的问题有任何帮助,请在另一篇文章(上面的链接)上查看我的答案,并记下代码中的问题(关于问题),我认为AminSojoudi也试图指出它。 Social.localUser.Authenticate()接受回调函数的参数(参考documentation)。因此,不要期望它在ConnectToGoogleServices()范围内为IsConnectedToGoogleServices分配结果(成功或失败)。如果Authenticate()调用运行得比代码执行速度快,那么您可能会获得成功,但这不会发生,并且您的函数无法随时返回Authenticate()函数调用的实际成功状态。如果你的其余代码(排行榜,成就)依赖于IsConnectedToGoogleServices布尔标志,那么那些也不会有效。

public bool ConnectToGoogleServices()
{
    if (!IsConnectedToGoogleServices)
    {
        Social.localUser.Authenticate((bool success) =>
        {
            IsConnectedToGoogleServices = success; // <-- callback result
        });

    }
    return IsConnectedToGoogleServices;  // <-- this won't return the result of a callback result.
}