Я пытаюсь сериализовать коллекцию.Сначала я попробовал 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;
}
}