2017-07-30 66 views
0

所以我目前正在一个团结的游戏,这是一个空气曲棍球。我想添加一个多人模式(1对1)。统一谷歌玩游戏实时消息不发送

所以在玩家与对手进行比赛之后,他们被连接到了比赛开始的房间。

但我有问题,当我想收到对手的消息。

在播放器脚本运动,我加入这个就作废了更新()

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]被切割和:

System.Convert.ToSingle(cut[3]) 

切[3]将寻找第四分割结果和仅存在三个所以会发生异常。这足以阻止方法的工作和位置更新。如果是这样,控制台日志中也应该有错误。

但是,也许OnRealTimeMessageReceived甚至没有被调用。您需要抛出一些断点并进行调试,或者添加一些调试日志来查看事情的进展情况。如果它甚至没有达到你期望的方法,那么这个问题可以被重新表述为“方法X为什么不被称为”

相关问题