Google Play服务创建回合制多人游戏匹配问题

时间:2014-06-25 12:08:09

标签: c# android unity3d google-play-services multiplayer

问题

问题 创建 回合制多人游戏匹配,使用 google play服务 unity3D

  1. PlayGamesPlatform.Activate()成功初始化PlayGamesPlatform 。但是,它没有初始化 IPlayGamesClient ITurnBasedMultiplayerClient
  2. CreateQuickMatch(...)无法调用OnMatchStarted(...),CreateQuickMatch(...)中的参数
  3. 每次调用 CreateQuickMatch(...)时,它会发送错误," NullReferenceException :对象引用未设置为对象的实例GooglePlayGames.PlayGamesPlatform.get_TurnBased()"
  4. 采取的步骤

    1. 研究 在线问题。由于 GooglePlay API 中的最近更改,某些论坛已经注意到,此问题 解决方案将API降级以前的版本。这是不成功

    2. 更新 java和java JDK结果不成功

    3. 用作参考的链接

      https://github.com/playgameservices/play-games-plugin-for-unity https://github.com/playgameservices/play-games-plugin-for-unity/blob/master/TBMP.md

      代码

      // Use this for initialization
      void Start ()
      {
            // recommended for debugging:
            PlayGamesPlatform.DebugLogEnabled = true;
      
           // Activate the Google Play Games platform
           PlayGamesPlatform.Activate ();
      }
      
      void OnMatchStarted (bool success, TurnBasedMatch match)
      {
           if (success) 
           {
              this.gameMatch = match;
              Debug.Log ("Success");
           } else 
           {
              Debug.Log ("Failed");
           }
      } 
      
      // Update is called once per frame
      void Update ()
      {
           if (Input.touchCount > 0 && TouchPhase.Ended == Input.GetTouch (0).phase) 
           {
              PlayGamesPlatform.Instance.TurnBased.CreateQuickMatch (minPlayers, maxPlayers, variant, OnMatchStarted);
           }
      }
      

1 个答案:

答案 0 :(得分:0)

我认为您需要先使用帐户登录才能创建房间。只需在激活Google Play游戏平台后添加以下代码即可。

Social.localUser.Authenticate(
    (bool success) => { string loginStatus = success ? "Login successful" : "Login failed";
    Debug.Log("Login status: " + loginStatus);
});

此功能将打开登录屏幕,您可以选择登录哪个帐户。函数中的奇怪参数是在身份验证过程完成时调用的lambda语句。在这种情况下,该功能可以记录"Login status: Login successful""Login status: Login failed"