📜  unity no serializefield - C# (1)

📅  最后修改于: 2023-12-03 15:05:44.777000             🧑  作者: Mango

Unity中的[NonSerialized]和[SerializeField]

在Unity中,[NonSerialized]表示跳过序列化,[SerializeField]则表示对该字段进行序列化。这两个标签很重要,因为序列化是许多Unity功能的核心(例如:将脚本保存在场景或资源中)。

用法

你可以在你的C#脚本中使用这些标签对字段进行标记。以下是一个示例:

public class Example : MonoBehaviour 
{
    [SerializeField]
    private int _serializedValue;

    [NonSerialized]
    private int _nonSerializedValue;
}

在上面的示例中,_serializedValue将会被序列化(这意味着它将会保存在场景或者您的资源中),而_nonSerializedValue将被忽略,因为它使用了[NonSerialized]标签。

为什么要使用[NonSerialized]和[SerializeField]?

在Unity中,使用序列化可以将对象保存到磁盘和从磁盘读取。序列化对于保存和恢复游戏状态非常有用,这使得您可以保存游戏状态并在后续启动时恢复它。

然而,并非所有字段都需要在序列化过程中保存。例如,许多类中都有某些值不应在场景保存中被保存。使用[NonSerialized]标记可以防止这些不需要保存的字段被序列化。

另一方面,如果想确保某个字段在序列化过程中被保存,可以使用[SerializeFiled]标记。

总结
  • [NonSerialized]标记用于跳过序列化。
  • [SerializeField]标记用于对字段进行序列化。
  • 序列化非常有用,可以将对象保存到磁盘并从磁盘读取。
  • 这两个标记可以用于控制哪些字段需要序列化。
  • 建议仅对需要保持的数据使用序列化。
参考资源