如何序列化 ScriptableObjects?

max*_*son 2 unity-game-engine

我正在使用一个我不完全理解但运行良好的保存系统。它保存了可序列化的代码,但我开始使用 ScriptableObjects 作为保存库存的一种方式,它坏了,我现在不知道如何修复它。

这是我正在使用的代码:

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

我尝试使用,[System.Serializable] 但出现此错误:

SerializationException:在程序集 UnityEngine.CoreModule 中输入 UnityEngine.ScriptableObject,版本=0.0.0.0,Culture=neutral,PublicKeyToken=null 未标记为可序列化。

我需要改变我保存游戏的方式还是有办法解决这个问题?

小智 5

序列化为 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
Run Code Online (Sandbox Code Playgroud)