从Unity发送Vector3到自定义的C#服务器

我正在开发一个多人游戏,其中服务器是一个自定义的C#服务器。 我想要做的是将每个玩家的位置存储在我的数据库中。

在我的情况下,我通过NetworkStream发送Vector3作为对象,问题是如何访问服务器端的该对象。 如你所知,那里没有Vector3类。

我不想让客户端发送的对象作为一个string,操纵它来获得坐标。 我想直接访问服务器端的Vector3的坐标。

你不能只通过networking发送一个Vector3,数据必须先被序列化。 要么你要手动序列化,要么使用某种帮助程序库来混淆你的所有序列化过程。

我个人更喜欢在处理networking数据包时构建我自己的串行器/解串器。

vector3可以很容易地序列化为一个简短的string,然后反序列化到一个容器对象服务器端以消耗数据。

string data = v3.x + "," + v3.y + "," + v3.z; 

在服务器上:

 //custom vector3 struct Vector3 { float X; float Y; float Z; public Vector3(float x, float y, float z) { X = x; Y = y; Z = z; } } //Data comes in string[] data = networkData.Split(','); Vector3 v3 = new Vector3(Single.Parse(data[0]), Single.Parse(data[1]), Single.Parse(data[2])); //Use data print(v3.x); 

如果您坚持发送Vector3对象,则需要在“自定义C#服务器”上创建一个Vector3类来parsing对象。 如果你不想这样做,你应该将数据从Vector3发送到你的服务器。 你不能只是拿一个对象,parsing它的内容,而你的服务器不知道对象的任何内容。