我的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
库内,是否可能?如果不是,我怎么能在内部和外部实现中将它分开呢?
答案 0 :(得分:0)
您无法使用Unity序列化属性。考虑将其存储在私有字段中,并使用您的属性getter公开它。
此外,您不能将构造函数与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; } }