强制 Unity 序列化私有字段。
当 Unity 序列化您的脚本时,它只序列化公共字段。如果您也希望 Unity 序列化您的私有字段,可以将 SerializeField 属性添加到这些字段。
Unity 会序列化所有脚本组件,重新加载新的程序集,并从序列化版本重新创建您的脚本组件。此序列化使用 Unity 内部序列化系统完成;而不是使用 .NET 的序列化功能。
序列化系统可以执行以下操作
可序列化类型
Unity 可以序列化以下类型的字段
有关序列化的更多信息,请参阅 脚本序列化。
注意:如果您在列表(或数组)中放置一个元素两次,当列表被序列化时,您将获得该元素的两个副本,而不是在新的列表中两次出现一个副本。
注意:如果您想序列化自定义结构体字段,则必须为结构体提供 [System.Serializable] 属性。
提示:Unity 不会序列化 Dictionary,但是您可以为键存储一个 List<>,为值存储一个 List<>。请参阅 ISerializationCallbackReceiver 以获取示例。
其他资源:NonSerialized、SerializeReference、Serializable
using UnityEngine;
public class SomePerson : MonoBehaviour { //This field gets serialized because it is public. public string firstName = "John";
//This field does not get serialized because it is private. private int age = 40;
//This field gets serialized even though it is private //because it has the SerializeField attribute applied. [SerializeField] private bool hasHealthPotion = true;
void Start() { if (hasHealthPotion) Debug.Log("Person's first name: " + firstName + " Person's age: " + age); } }