Как мне сериализовать ScriptableObjects? - PullRequest
0 голосов
/ 18 сентября 2018

Я использую систему сохранения, я не до конца понимаю, но работает хорошо. Он сохраняет сериализуемый код, но я начал использовать ScriptableObjects как способ сохранения инвентаря, и он сломался, и я не знаю, как это исправить сейчас.

Это код, который я использую:

[CreateAssetMenu(fileName = "Attack")]
 public class PlayerAttckCard : ScriptableObject
{
    public string AtackName,bookName;
    public bool multiTarget;
    public float Bacepower;
    public GameObject miniGame;
}

Я пытался использовать [System.Serializable] но я получил эту ошибку:

SerializationException: Тип UnityEngine.ScriptableObject в сборке UnityEngine.CoreModule, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null не помечен как сериализуемый.

Нужно ли менять способ сохранения игры или есть способ это исправить?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Сериализация в JSON? Вы можете сделать это с помощью JsonUtility.

https://docs.unity3d.com/Manual/JSONSerialization.html

public class TestObject : ScriptableObject
{
    public string foo, bar;
}

var obj = ScriptableObject.CreateInstance<TestObject>();
obj.foo = "hello";
obj.bar = "world";
var json = JsonUtility.ToJson(obj);
Debug.Log(json); // {"foo":"hello","bar":"world"}

obj.foo = "something";
obj.bar = "else";
JsonUtility.FromJsonOverwrite(json, obj);
Debug.Log(obj.foo + ", " + obj.bar); // hello, world
0 голосов
/ 18 сентября 2018

Насколько я знаю, вы не можете, возможно сделать пользовательский инспектор, редактор, графический интерфейс, но это довольно сложно, я даже не знаю, как это сделать. но, может быть, вы можете сделать это.

[System.serializable]
public class PlayerAttackCard
{
   public string AtackName,bookName;
   public bool multiTarget;
   public float Bacepower;
   public GameObject miniGame;
}

И объект сценариев.

public class PlayerAttackCardData : ScriptableObject
{
    public PlayerAttackCard playerAttackCard = new PlayerAttackCard();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...