[英]Type in assembly is not marked as serializable Unity
我有一个包含玩家变量和一些游戏逻辑的 MonoBehaviour class PlayerDistanceScript。
我正在使用它将分数传递给 SaveSystem class:
在其中我调用 PlayerData 构造函数来传递玩家数据。
当我尝试将数据保存到文件“formatter.Serialize(stream, data);”时正在向我显示错误:SerializationException:在程序集“Assembly-CSharp,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“PlayerDistanceScript”未标记为可序列化。
避免此错误的最佳方法是什么? 感谢帮助
我在这个问题上苦苦挣扎。 我的回答不是很准确,但我希望它会有所帮助。 我记得,MonoBehaviour 是由 Unity 团队使用 C++ 创建的,它有很多隐藏属性。 它不能被序列化,就像 GameObject 不能一样。 因此,由于您的脚本不大,我可以推荐这个:在您的 PlayerDistanceScript 文件中创建新的非 MonoBehaviour class。 从此脚本中删除您的属性并将它们添加到创建的 class。 然后,在 PlayerDistanceScript 中创建您创建的 class 的 object 并对其进行序列化,在必要时使用其属性。 不要忘记标记 class 及其属性可序列化。 如果您必须像文本一样序列化 Unity 类型 object,则不能直接对 go 进行序列化。 如果你真的需要它,你可以把它的key值保存起来,比如position,size等,然后序列化。 祝你好运。
所有型号都必须在 class 之上设置 [System.Serializable]。
前任:
[System.Serializable]
public class PlayerModel
{
public string name;
public List<Items> items = new List<Items>();
}
[System.Serializable]
public class Items
{
public string name;
public float dammage;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.