シリアライズ/デシリアライズする必要があるデータがありますが、JsonUtilityは想定していることをしていません。私はSpriteDataCollectionを作成し、JsonUtilityでそれをシリアル化しようとすると、私はちょうど空のオブジェクト{}を取得Unity C#JsonUtilityがリストをシリアライズしていません
public class SpriteData {
public string sprite_name;
public Vector2 sprite_size;
public List<Vector2> subimage;
}
public class SpriteDataCollection
{
public SpriteData[] sprites;
}
:ここでは私が働いているオブジェクトです。それはどのようにビルドされているのですか:
SpriteData data = new SpriteData();
data.sprite_name = "idle";
data.sprite_size = new Vector2(64.0f, 64.0f);
data.subimage = new List<Vector2> { new Vector2(0.0f, 0.0f) };
SpriteDataCollection col = new SpriteDataCollection();
col.sprites = new SpriteData[] { data };
Debug.Log(JsonUtility.ToJson(col));
デバッグログは「{}」だけを表示します。なぜそれは何かをシリアル化していないのですか?私はそれをテストして、1つのSpriteDataをシリアル化することは、それが行うべきものを正確に行いますが、SpriteDataCollectionでは機能しません。
私はそれが何らかの種類の魔法のタグか何かをしていると思った。ありがとう。今のところ意図どおりに動作しています。 –
私はこれに遭遇しましたが、問題は5でした。私のフィールドは公開されていませんでした。私はそれがルールにあることを知っている、ちょうど私の心を滑った。 –
@KylePostlewaitプライベートであれば、シリアル化されません。ただし、プライベートフィールドの上に '[SerializeField]'を置いてシリアル化することもできます。 – Programmer