【问题标题】:Unity google play games realtime message not sendUnity 谷歌玩游戏实时消息不发送
【发布时间】:2018-01-06 07:42:38
【问题描述】:

所以我目前正在开发一款统一的游戏,它是一种空气曲棍球。我想添加一个多人模式(1 对 1)。

因此,在玩家与对手进行比赛后,他们会在游戏开始的房间中连接起来。

但是当我想收到对方的消息时遇到了问题。

在播放器脚本移动中,我将其添加到 void update()

Multiplayer.Instance.SendMyUpdate(positionX, PositionZ);

在多人游戏脚本中,我添加了这个:

public void SendMyUpdate(float posX, float posZ) {

    string PlayerUserNameString = PlayGamesPlatform.Instance.RealTime.GetSelf ().DisplayName;
    char[] characters = PlayerUserNameString.ToCharArray ();
    string data = characters + ":" + posX + ":" + posZ;
    byte[] bytedata = System.Text.ASCIIEncoding.Default.GetBytes (data);
    PlayGamesPlatform.Instance.RealTime.SendMessageToAll (false, bytedata);
}

关于 OnRealTimeMessageReceived 方法:

string rawdata = System.Text.ASCIIEncoding.Default.GetString (data);
string[] cut = rawdata.Split (new string[] { ":" }, System.StringSplitOptions.RemoveEmptyEntries);

OpponentUserName = System.Convert.ToSingle (cut[1]).ToString();

Transform target = GameObject.Find ("mallet Opponent").transform;

        Vector3 newpos = new Vector3
        (
                System.Convert.ToSingle(cut[2]),
                0,
                System.Convert.ToSingle(cut[3])
        );

在我写完这个并在两台设备上构建之后,当房间连接并开始游戏时,对手玩家根本不动,我不知道问题出在哪里。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    数组是从零开始的,所以对手的用户名应该被删减[0]并且:

    System.Convert.ToSingle(cut[3])
    

    cut[3] 将寻找第 4 个拆分结果,并且只有三个,因此会发生异常。这足以阻止方法工作和位置更新。如果是这样,控制台日志中也应该有错误。

    但是也许 OnRealTimeMessageReceived 甚至没有被调用。您需要输入一些断点并进行调试,或者添加一些调试日志以查看进展情况。如果它甚至没有达到您期望的方法,那么问题可以改写为“为什么没有调用方法 X”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2017-11-13
      • 2016-09-29
      • 2022-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多