Unity 谷歌玩游戏实时消息不发送
Posted
技术标签:
【中文标题】Unity 谷歌玩游戏实时消息不发送【英文标题】:Unity google play games realtime message not send 【发布时间】: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])
);
在我写完这个并在两台设备上构建之后,当房间连接并开始游戏时,对手玩家根本不动,我不知道问题出在哪里。
有什么想法吗?
【问题讨论】:
【参考方案1】:数组是从零开始的,所以对手的用户名应该被删减[0]并且:
System.Convert.ToSingle(cut[3])
cut[3] 将寻找第 4 个拆分结果,并且只有三个,因此会发生异常。这足以阻止方法工作和位置更新。如果是这样,控制台日志中也应该有错误。
但是也许 OnRealTimeMessageReceived 甚至没有被调用。您需要输入一些断点并进行调试,或者添加一些调试日志以查看进展情况。如果它甚至没有达到您期望的方法,那么问题可以改写为“为什么没有调用方法 X”
【讨论】:
以上是关于Unity 谷歌玩游戏实时消息不发送的主要内容,如果未能解决你的问题,请参考以下文章