我正在免费玩多人游戏,并且正在尝试建立自己的网络系统。
目前我有这样的东西
public class NetworkedEntity : Monobehavior
public Guid guid;
awake()
{
/* serialize all components in game object,
* broadcast to the server to then be instantiated on all
* players machines
*/
}
public void SendSync(object obj) {
/* Send some JSON over TCP */
}
public void SendAsync(object obj) {
/* Send some JSON over UDP */
}
我有一个辅助类,它是我的TCP / UDP连接的单例。 现在我在这里的问题是,我可以使用Newtonsoft或JsonUtility发送组件(列表)JSON并将其实例化吗?
一些有关如何处理唤醒的伪代码
new NetworkContainer { Guid = this.guid, Components = GetAllComponents() }
// send over TCP
现在这很好,并且对我来说完全有意义,但是当我收到此消息后,如何知道匿名序列化的类型?我当时正在考虑使用反射并创建TypeName的字典,并在JSON中也将其发送。
我知道我可以更具体一些,并且一次只能序列化一个组件,但是我想制作一个可扩展的网络API,该组件需要较少的属性注释,并将其提取为一个网络类/ api < / p>
编辑:我想我要添加一个与它们的网络GUI一起存在的所有Gameobject的集合。如果存在,我们要么添加或更新组件,要么实例化游戏对象并添加收到的每个组件