Unity匿名序列化游戏对象中的所有组件

时间:2019-02-24 13:39:42

标签: unity3d serialization deserialization

我正在免费玩多人游戏,并且正在尝试建立自己的网络系统。

目前我有这样的东西

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的集合。如果存在,我们要么添加或更新组件,要么实例化游戏对象并添加收到的每个组件

0 个答案:

没有答案