[英]How to serialize class in custom library
我的C#库中有一个类:
public class PositiveLayer : MonoBehaviour
{
[SerializableField]
internal BezierPoint[] Bezier { get; private set; }
public PositiveLayer()
{
Bezier = new BezierPoint[0];
}
[Serializable]
public class BezierPoint
{
public Vector2 Target;
public Vector2 Tangent;
}
}
Unity3D可以在我的库中看到此类,并可以像组件一样向场景中的某些GameObject
添加。 但是它在预制件中失去了状态。 如何为C#库(.DLL)中的类提供序列化?
我应该如何将这些类更改为Unity3D的编辑器,以使其能够进行正确的预制以保存此脚本状态? 如果我的班级位于.dll
库中,是否可以? 如果不是这样,我如何在内部和外部实现中将其分开呢?
您无法使用Unity序列化属性。 考虑将其存储在私有字段中,并将其与您的属性获取器一起公开。
另外,您不能将构造函数与MonoBehaviours一起使用。 考虑将Awake()方法用于初始化目的。 请注意,如果将构造函数代码移至Awake,它将覆盖序列化的值。
[SerializableField]
//default value if there is no serialized value available.
private BezierPoint[] bezier = new BezierPoint[0];
internal BezierPoint[] Bezier { get { return bezier; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.