繁体   English   中英

如何在自定义库中序列化类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM