Unity Как сериализовать картографические данные - PullRequest
0 голосов
/ 08 октября 2019

использовать 2019.1.8f1 ver

Я имел в виду много информации, но меня беспокоит неизвестная ошибка.

Ошибка SerializationException: Тип 'UnityEngine.GameObject' in Assembly 'UnityEngine.CoreModule, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null 'не помечена как сериализуемая.

[System.Serializable]
public class Map
{
    public Node[,] nodes;
}

[System.Serializable]
public class Node
{
    public GameObject tile;

    public bool walkable;
    public Vector3 worldPosition;
    public int gridX;
    public int gridY;

    public int gCost;
    public int hCost;
    public int FCost { get { return gCost + hCost; } }

    public Node(bool _walkable, Vector3 _worldPosition, int _gridX, int _gridY)
    {
        walkable = _walkable;
        worldPosition = _worldPosition;
        gridX = _gridX;
        gridY = _gridY;

    }

}


[System.Serializable]
public class Grid : MonoBehaviour
{
    public Node[,] grid;


public void SaveMapData()
{
    Debug.Log("Save");
    FileStream stream = File.Create(Application.persistentDataPath + path);
    BinaryFormatter bf = new BinaryFormatter();

    Map map = new Map();
    map.nodes = grid.grid;

    bf.Serialize(stream, map);
    stream.Close();
 }

1 Ответ

0 голосов
/ 08 октября 2019

Ваш класс Node ссылается на класс GameObject здесь:
public GameObject tile;

Лучшим решением будет избавиться от этой ссылки. Это также улучшило бы отделение вашей модели от вида.

Или попробуйте быстро исправить атрибут [NonSerialized]:
[NonSerialized] public GameObject tile;

...