2017-07-30 14 views
0

私は現在、1つのゲームで作業しています。それはエアホッケーです。そして、私はマルチプレイヤーモード(1対1)を追加したいと思います。Unity google play gamesリアルタイムメッセージが送信されない

プレイヤーは相手との試合後、ゲームが始まる部屋に接続されます。

しかし、相手のメッセージを受信したいときに問題が発生しています。

プレイヤースクリプトの動きで

、私は(ボイドアップデートでこれを追加)

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]) 
     ); 

私はこれを書いて、2つのデバイスで構築した後、部屋が接続され、ゲームが始まり、相手プレイヤーはまったく動かず、どこに問題があるのか​​わからない。

アイデア?相手のユーザ名を切断しなければならないので

答えて

1

配列はゼロに基づいている[0]:

System.Convert.ToSingle(cut[3]) 

カット[3] 4分割結果を見て、3つだけのように例外が発生するがあります。これはメソッドの動作と位置の更新を防ぐのに十分です。その場合は、コンソールログにもエラーがあるはずです。

ただし、おそらくOnRealTimeMessageReceivedは呼び出されていない可能性があります。いくつかのブレークポイントを投げてデバッグしたり、いくつかのデバッグログを追加して、どれほどのものが得られているかを確認する必要があります。あなたが期待している方法に到達していない場合は、「なぜメソッドXは呼び出されていないのですか」と言い換えることができます。

関連する問題