我使用的是我不太了解的保存系统,但是效果很好。它保存了可序列化的代码,但是我开始使用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未标记为可序列化。
我需要更改保存游戏的方式还是有解决此问题的方法?
答案 0 :(得分:2)
序列化为JSON?您可以使用JsonUtility做到这一点。
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
答案 1 :(得分:1)
据我所知,您不可能做一个自定义检查器,编辑器,gui,但这非常棘手,我什至都不知道该怎么做。但也许您可以做到这一点。
[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();
}