Unity google 玩游戏实时消息发不出去

Unity google play games realtime message not send

所以我目前正在开发一款 unity 游戏,它是一款空中曲棍球。我想添加多人游戏模式(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])
        );

我写完后在两台设备上搭建后,当房间连接起来,游戏开始时,对方玩家根本不动,我不知道问题在哪里。

有什么想法吗?

数组是从零开始的,因此应该删除对手的用户名[0] 并且:

System.Convert.ToSingle(cut[3])

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

然而,也许甚至没有调用 OnRealTimeMessageReceived。您需要设置一些断点并进行调试,或者添加一些调试日志以查看进展情况。如果它甚至没有达到您期望的方法,那么问题可以改写 "why is method X not being called"