在看Unity官方Demo《space shooter》时,一个没有继承MonoBehaviour的类Done_Boundary :
[System.Serializable]
public class Done_Boundary
{
public float xMin, xMax, zMin, zMax;
}
Serializable是.Net自带的序列化
有时候我们会自定义一些单独的class/struct, 由于这些类并没有从 MonoBehavior 派生所以默认并不被Unity3D识别为可以Serialize的结构。自然也就不会在Inspector中显示。我们可以通过添加 [System.Serializable]这个Attribute使Unity3D检测并注册这些类为可Serialize的类型。具体做法如下:
[System.Serializable]
public class FooBar {
public int foo = 5;
public int bar = 10;
}
注意:Serializable只可以对class,struct,enum,delegate进行序列化,不可以对属性序列化
具体的SerializeField和Serializable,赵青青大神有具体说明
https://www.cnblogs.com/zhaoqingqing/p/3995304.html
他对ScriptableObject的序列化还进行了举例说明,讲的特别好。

本文深入解析Unity中序列化的实现方式,特别是如何通过使用[System.Serializable]属性使非MonoBehaviour类成为可序列化的结构,以便在Inspector中显示和编辑。文章详细介绍了序列化的基本概念,以及其在Unity3D中的应用,并提供了具体示例。
2350

被折叠的 条评论
为什么被折叠?



