これは私のコードです:
//Code for host
case (GameState.PlayingAsHost):
{
session.Update();
while (session.LocalGamers[0].IsDataAvailable) //Recieve data
{
NetworkGamer sender;
PacketReader reader = new PacketReader();
session.LocalGamers[0].ReceiveData(reader, out sender);
guestPaddle.Position = reader.ReadVector2();
}
hostPaddle.Update(); //Update paddle position
var packetWriter = new PacketWriter(); //Send data
packetWriter.Write(new Vector2(hostPaddle.Position.X, 50));
session.LocalGamers[0].SendData(packetWriter,SendDataOptions.InOrder);
break;
}
//Guest Code
case (GameState.PlayingAsGuest):
{
session.Update();
while (session.LocalGamers[0].IsDataAvailable)//Recieve data
{
NetworkGamer sender;
PacketReader reader = new PacketReader();
session.LocalGamers[0].ReceiveData(reader, out sender);
hostPaddle.Position = reader.ReadVector2();
}
guestPaddle.Update(); //Update paddle position
var packetWriter = new PacketWriter(); //Send data
packetWriter.Write(new Vector2(guestPaddle.Position.X, 50));
session.LocalGamers[0].SendData(packetWriter, SendDataOptions.InOrder);
break;
}
これは卓球マルチプレイヤーになります (したがって、パドルの名前)。ゲストが受け取る前にパッケージを送信する前は、ゲストとしてプレイしているときにホストの X 位置がゲストの X 位置に設定されることを除いて、コードは機能していました。ゲストとホストがデータを送信する前に受信するように変更すると、問題が解決するかどうかをテストしていました。そうすることで、ホストは次のエラー メッセージを受け取ります。「ストリームの終わりを超えて読み取ることができません」。この問題を解決するにはどうすればよいですか?