Я пытаюсь сериализовать огромный класс с вложенными классами, AudioClip и texture2D.Я реализовал интерфейс ISerializable и пометил все классы с помощью SerializableAttribute.Я использую JsonUtility для преобразования в Json и обратно.
Все работает хорошо, кроме Textures2D, Textures2D [] и AudioClip.Ниже описана реализация метода ISerializable:
[Serializable]
public class Illustration : ISerializable
{
public Texture2D Image = new Texture2D(256, 256);
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue(nameof(Image), Image.EncodeToPNG(), typeof(byte[]));
}
private Illustration(SerializationInfo info, StreamingContext context)
{
Image.LoadImage(info.GetValue(nameof(Image), typeof(byte[])) as byte[]);
}
}
[Serializable]
public class CustomAnimation : ISerializable
{
public Texture2D[] Images;
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue(nameof(Images), Images.Select(x => x.EncodeToPNG()).ToArray(), typeof(byte[][]));
}
private CustomAnimation(SerializationInfo info, StreamingContext context)
{
var textures = info.GetValue(nameof(Images), typeof(byte[][])) as byte[][];
if (textures != null)
{
var imagesAndTextures = Images.Zip(textures, (i, t) => new {Images = i, textures = t});
foreach (var it in imagesAndTextures)
{
it.Images.LoadImage(it.textures);
}
}
}
}
Я ожидаю, что этот код создаст JSON с байтовыми массивами текстур, но я получаю это:
"Illustrations": [
{
"Image": {
"instanceID": 34540
}
}
]
Почему у меня этоINSTANCEID?Мне нужна бинарная текстура, чтобы сохранить ее в текстовом файле.Это не объект времени выполнения.