Kryonet:注册的课程必须完全相同吗?

时间:2015-01-09 11:42:26

标签: java networking serialization packet kryonet

我通过kryonet发送一些包含“Entity”变量的数据包。我自己创建了实体类。问题是,在注册实体类时,服务器上的类文件和客户端不完全相同。

在客户端,我没有包含一些方法,因为它们依赖于访问仅作为服务器端的变量而且我完全删除了所有构造函数,因为客户端将不是创建实体的那个,服务器将。在服务器范围内,我省略了渲染方法,因为服务器不会渲染。

那里有哪些方法和构造函数真的很重要吗? kryonet只是看看变量是否相同(因为它们是)?谢谢!

顺便说一句,如果你想知道,Entity是一个抽象方法,因此当我创建新类型的实体(如“Player”)时,它们会扩展它并添加更多方法和变量。我希望通过包发送它们也没问题。

1 个答案:

答案 0 :(得分:0)

我不确定你在问什么,但据我了解,我会尽力回答你的问题。

所以我认为你要做的是你有一个名为Entity的基类,你将它扩展到不同的类。您将在类中实现一些方法,这些方法将被发送到客户端,一些方法将被发送到服务器。

所以当你问到那里有什么方法和构造函数时,答案是否定的。直到你有一个空的构造函数(Kryo序列化程序所需)的时候,kryonet对你所拥有的任何构造函数都没问题。只需要确保你有一个空的构造函数。我在kryonet有很多类,有超过2个构造函数,它们工作得非常好。

提示,因为你是在网络上发送数据,如果我是你,我会删除所有不会在客户端使用的数据变量,并抽象出更多的类。

另外,为什么要在课堂上发送方法?只是好奇。我认为您应该在服务器和客户端中使用方法,并且应该从数据包(类)中取出数据,然后将其发送到服务器或客户端中的方法。

如果有什么不清楚请告诉我。