2017-07-30 97 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爲什麼不被稱爲」

相關問題