我正在尝试序列化一个集合。首先我尝试了 Unity 的 Json,然后我切换到了 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;
}
}