[Unity开发]Unity中可序列化类型

文章讲述了在Unity中遇到的预制体自定义脚本序列化问题,由于Unity不支持嵌套类型,作者通过将vector3[]转换为自定义类并配合[Serializable]属性解决了问题。还介绍了Unity的序列化规则和如何确保自定义类可序列化。
摘要由CSDN通过智能技术生成

问题的出现

起因是想在预制体的自定义脚本上保存一个List<vector3[]>类型数据,后发现再导入已保存的预制体时此数据并没有保存。

问题的解决

经查阅资料,发现是Unity不支持这种嵌套类型的序列化,后将vector3[]改为了一自定义类,并配合[Serializable]属性,最后达成目的。

Unity默认支持的序列化类型

Unity 中的序列化程序在实时游戏环境中运行。这对性能有重大影响。因此,Unity 中的序列化与其他编程环境中的序列化具有不同的行为。以下部分概述了如何在 Unity 中使用序列化。要使用字段序列化,必须确保其:

public,或具有 SerializeField 属性
static
const
readonly
具有可序列化的 fieldtype。(请参阅下面的可序列化的简单字段类型。)

可序列化的简单字段类型
具有 Serializable 属性的自定义非抽象、非泛型类
(请参阅下面的如何确保自定义类可序列化。)
具有 Serializable 属性的自定义结构
对从 UnityEngine.Object 派生的对象的引用
原始数据类型(int、float、double、bool、string 等)
枚举类型
某些 Unity 内置类型:Vector2、Vector3、Vector4、Rect、Quaternion、Matrix4x4、Color、Color32、LayerMask、AnimationCurve、Gradient、RectOffset、GUIStyle
可序列化的容器字段类型
可序列化的简单字段类型的数组
可序列化的简单字段类型的 List<T>
注意:Unity 不支持多级类型(多维数组、交错数组和嵌套容器类型)的序列化。如果要序列化这些类型,可使用两种方法:将嵌套类型包装在类或结构中,或使用序列化回调 ISerializationCallbackReceiver 执行自定义序列化。有关更多信息,请参阅自定义序列化的文档。

如何确保自定义类可序列化
确保其符合以下条件:

具有 Serializable 属性
非抽象
非静态
非泛型(但可继承自泛型类)
要确保自定义类或结构的字段被序列化,请参阅上面的如何确保脚本中的字段被序列化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值