Сохраните коллекцию в Unity с json.net - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь сериализовать коллекцию.Сначала я попробовал Json в Unity, затем переключился на Newtonsoft.Newtonsoft работал в редакторе, но не стал сериализоваться, когда я создавал его как UWP.Вот мой кодЛюбая помощь будет оценена:

void SavePieces()
    {
        Collection<PieceData> PieceDataList = new Collection<PieceData>();

        Piece[] pieces = GameObject.FindObjectsOfType<Piece>();
        int i = 1;

        foreach (Piece piece in pieces)
        {
            if (piece.tag != "GamePiece")
                continue;

            PieceData tempPiece = new PieceData();

            tempPiece.PlayerId = piece.PlayerId;
            tempPiece.CurrentSpace = piece.CurrentSpace?.name;
            tempPiece.EndingSpace = piece.EndingSpace.name;
            tempPiece.StartingSpace = piece.StartingSpace.name;
            tempPiece.Parent = piece.MyPlayerStartArea.name;
            tempPiece.PieceStatus = piece.PieceStatus;
            tempPiece.PositionX = piece.transform.position.x;
            tempPiece.PositionY = piece.transform.position.y;

            PieceDataList.Add(tempPiece);

            i++;
        }

        var pieceJson = JsonConvert.SerializeObject(PieceDataList, Formatting.Indented);

        PlayerPrefs.SetString("PieceData", pieceJson);
        Debug.Log("Player Prefs Pieces= " + PlayerPrefs.GetString("PieceData"));
    }

Вот моя структура:

[Serializable]
public struct PieceData
{
    public int PlayerId { get; set; }
    public string CurrentSpace { get; set; }
    public string EndingSpace { get; set; }
    public string StartingSpace { get; set; }
    public Piece.PieceState PieceStatus { get; set; }
    public bool IsHomePiece { get; set; }
    public string Parent { get; set; }
    public float PositionX { get; set; }
    public float PositionY { get; set; }

    public PieceData(int playerId, string currentSpace, string endingSpace, string startingSpace, Piece.PieceState pieceStatus, bool isHomePiece, string parent, float x, float y)
    {
        PlayerId = playerId;
        CurrentSpace = currentSpace;
        EndingSpace = endingSpace;
        StartingSpace = startingSpace;
        PieceStatus = pieceStatus;
        IsHomePiece = isHomePiece;
        Parent = parent;
        PositionX = x;
        PositionY = y;

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...