Unity google玩游戏实时消息不发送

时间:2017-07-30 19:41:07

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

所以我目前正在制作一个团结的游戏,它是一个空气曲棍球。我想添加一个多人游戏模式(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])
        );

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

数组基于零,因此对手用户名应该被剪切[0]和:

System.Convert.ToSingle(cut[3])

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

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

相关问题