Hello. I want to serialize Sprite in Netcode, but getting this error: OverflowException: Writing past the end of the buffer
Unity.Netcode.FastBufferWriter.WriteBytesSafe (System.Byte value, System.Int32 size, System.Int32 offset)* What am I doing wrong?
This is my class:
using Unity.Netcode;
using UnityEngine;
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Item")]
public class Item : ScriptableObject, INetworkSerializable
{
public string name = "New Item";
public bool isDefaultItem = false;
public Sprite icon;
public virtual void Use()
{
}
public void RemoveFromInventory()
{
// Inventory.instance.Remove(this);
}
/* Serialization */
public void SetIconFromByteArray(byte[] bytes)
{
Texture2D texture = new Texture2D(2, 2);
texture.LoadImage(bytes);
icon = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 0.5f);
}
public byte[] GetIconAsByteArray()
{
Texture2D texture = icon.texture;
return texture.EncodeToPNG();
}
void INetworkSerializable.NetworkSerialize<T>(BufferSerializer<T> serializer)
{
serializer.SerializeValue(ref name);
serializer.SerializeValue(ref isDefaultItem);
byte[] iconBytes = GetIconAsByteArray();
serializer.SerializeValue(ref iconBytes);
if (serializer.IsReader)
{
SetIconFromByteArray(iconBytes);
}
}
}