我正在开发xna游戏并遇到了一些问题。我开始只是在主循环中从服务器获取信息,如下所示:
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等)需要很多参数。
答案 0 :(得分:0)
对我来说看起来是正确的方式,我唯一看到的是方法的名称,也许它应该是UpdatePosition而不是GetPosition。
您使用套接字将数据从客户端传输到服务器吗?如果你在每次GetPosition调用时发送一个数据包(你在主循环中调用它,所以在每一帧),它可能在生产环境上非常滞后
也许你可以每80 / 100ms调用一次