My Class
[System.Serializable]
public class StallData
{
public StallData(ulong stallID, stallSurfaceTextureData)
{
StallID = stallID;
StallSurfaceTextureData = stallSurfaceTextureData;
}
[field: SerializeField]
public ulong StallID{ get; private set; }
[field: SerializeField]
public StallSurfaceTextureData StallSurfaceTextureData { get; private set; }
}
[System.Serializable]
public class StallSurfaceTextureData
{
public StallSurfaceTextureData( int floorTextureID, int leftTextureID, int right, int back)
{
Debug.LogFormat($" f {floorTextureID} l {leftTextureID} r {right} b {back}");
BackWallTextureID = back;
LeftWallTextureID = leftTextureID;
RightWallTextureID = right;
FloorTextureID = floorTextureID;
}
[field: SerializeField]
public int BackWallTextureID { get; private set; }
[field: SerializeField]
public int LeftWallTextureID { get; private set; }
[field: SerializeField]
public int RightWallTextureID { get;private set; }
[field: SerializeField]
public int FloorTextureID { get; private set; }
}
using newtonsoft-json when I am converting my JSON to this class I am getting back, left & right value 0 and for floor, I am getting the correct value.
I am unable to find the reason for it.
Unity version 2021.3.12f1
this is my JSON
{
"StallID": 889448,
"StallSurfaceTextureData":
{
"BackWallWallTextureID": 0,
"LeftWallWallTextureID": 1,
"RightWallWallTextureID": 2,
"FloorTextureID": 3
}
}
I renamed the parameter name, and one time it worked then again I am getting the same issue.
Edit: I have changed the parameter name in JSon but still the issue persists. The only way it is working is if I am keeping the parameter name and the variable name inside the class is same. I am not getting how the Parameter name is affecting the value assignment in the class? for ex: If I keep my class like this it will work
[System.Serializable]
public class StallSurfaceTextureData
{
public StallSurfaceTextureData( int floorTextureID, int leftWallTextureID, int rightWallTextureID, int backWallTextureID)
{
Debug.LogFormat($" f {floorTextureID} l {leftWallTextureID} r {rightWallTextureID} b {backWallTextureID}".ToGreen());
BackWallTextureID = backWallTextureID;
LeftWallTextureID = leftWallTextureID;
RightWallTextureID = rightWallTextureID;
FloorTextureID = floorTextureID;
}
[field: SerializeField]
public int BackWallTextureID { get; private set; }
[field: SerializeField]
public int LeftWallTextureID { get; private set; }
[field: SerializeField]
public int RightWallTextureID { get;private set; }
[field: SerializeField]
public int FloorTextureID { get; private set; }
}