我正在尝试序列化自定义类,但它有一个List<>其中的另一个自定义类。
自定义类非常简单:
[Serializable]
public class World
{
public List<TileData> WorldTiles = new List<TileData>(); //Collection of all tiles.
}
无法通过网络发送,没有错误,没有警告,没有消息。客户端永远不会收到数据。
然而,如果我做同样的事情只有一个TileData而不是List,那么它的作用是什么。
[Serializable]
public class TileData
{
public myVector3 myPosition = new myVector3(); //Tile's Transform.Position
public myVector2 tilePosition = new myVector2(); //Tile's TilePosition
public string myName; //Name of Prefab to load (What Tile type?)
public string myBiome; //Biome the Tile belongs to
public List<ObjectData> myObjects = new List<ObjectData>(); //A list of all the Tile's objects.
}
如果我发送单个&#34; TileData&#34;一切都很好。
如果我发送一个&#34; World&#34;通过网络对象,它失败了。没有错误,客户端永远不会收到数据。
我知道你的第一个想法是错误可能在网络部分,但其他一切都很完美(所有原语,byte []我手动创建,我的自定义类&#34; TileData& #34;序列化,但不是我的自定义类&#34; World&#34;。这是唯一没有通过的东西。)
所以我认为我可能错误地序列化了这个特定的类?
我使用了两种方法,都做同样的事情,
// Convert an object to a byte array
public static byte[] ObjectToByteArray(System.Object obj)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
和
// Convert an object to a byte array
public static byte[] ObjectToByteArray(World obj)
{
BinaryFormatter bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, obj);
ms.close();
return ms.ToArray();
}
}