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"
所以我目前正在开发一款 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"