Как сериализировать пользовательский класс в юнити?
Пытаюсь сделать бинарную сериализацию для сохранения игрового процесса, но выскакивает ошибочка
SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
И проблема в списке с пользовательским типом данных (если этот список убрать, всё работает без ошибок)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
[Serializable]
public class GameData
{
public List<InventorySlot> slotsPlayer = new List<InventorySlot>();
public float hpPlayer;
public int money;
}
При этом атрибут [Serializable] у InventorySlot имеется
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using TMPro;
using UnityEngine.UI;
[System.Serializable]
public class InventorySlot : MonoBehaviour, IPointerClickHandler
{
public Transform slot;
public ItemMainParametr item;
public int amount;
public int maxAmount;
public bool isEmpty = true; // переменная обозначающая, что слот пустой
public GameObject iconGO; // для картинки
public TMP_Text itemAmountText;
public Transform buyPanel;
public bool eventCursor = false;
public GameObject itemInfoPanelPrefab; // просто префаб панельки информаии о предмете для копирования
public GameObject itemInfoPanel = null; // сама переменная, которая хранит скопированный префаб
public Transform playerInterfaceCanvas; // родительский канвас всех этих панелек
public float moveX = 110f; // переменные для выбора позиции
public float moveY = -50f; // таблички с информацией о предмете
не знаю, что мне делать, и не совсем понимаю в чём ошибка, есть лишь предположение, что в классе InventorySlot есть переменные с не сериализируемым типом данных и их надо, как то сделать сериализируемыми
А поля разве не надо {set; get} объявить? Ну и XmlAtribut прописать.
>есть лишь предположение, что в классе InventorySlot есть
Да ни хрена подобного. У тебя сам MonoBehaviour не сераиализуемый.
Хочешь что-то сериализовать - не наследуйся от него.