0

xna-gameを開発していますが、いくつかの問題が発生しました。私は次のようにメインループでサーバーから情報を取得することから始めました。

player.X = client.GetInt32();
player.Y = client.GetInt32();
player.IsShooting = client.GetBoolean();

しばらくして、このコードを別のクラスServerLayerに移動しました。

最初はServerLayerにプレーヤーインスタンスが含まれていましたが、しばらくすると、ServerLayerにはMapやBombsなどの参照が含まれるようになりました。そこで、サーバーからの情報を必要とするオブジェクトを次のようなメソッドに直接渡すことにしました。

メインループ内:

serverLayer.GetPosition(player);

ServerLayerの場合:

public void GetPosition(Player player) 
{
    player.X = client.GetInt32();
    player.Y = client.GetInt32();
    player.IsShooting = client.GetBoolean();
}

これは正しい方法ですか?一部のメソッド(GetInitなど)は多くの引数を取ります。

4

1 に答える 1

0

私には正しい方法のように見えますが、私が見るのはメソッドの名前だけです。おそらく、GetPositionではなくUpdatePositionである必要があります。

クライアントからサーバーにデータを転送するためにソケットを使用しますか?各GetPosition呼び出しでパケットを送信する場合(メインループで呼び出すため、各フレームで)、本番環境では非常に遅延する可能性があります。

たぶんあなたはそれを80/100msごとに1回呼び出すことができます

于 2012-10-30T11:26:44.143 に答える