当我创建此类并使用此自定义类打开列表时,可以在检查器中看到具有 FullName 的列表,但不能看到具有 Age 的列表。我想知道为什么?由于 Age 是公共财产,因此应该将其视为公共获取和设置。
[Serializable]
public class YoungPerson
{
public string FullName;
public string fullname
{
get { return FullName;}
set { FullName = value; }
}
public int Age { get; set; }
public YoungPerson(string fullName, int age)
{
this.FullName = fullName;
this.Age = age;
}
}
public string fullname { ... }
而是序列化的 public string FullName;
您已经可以在命名中看到 - fullname
将显示为
Fullname
,而不是按照
Full Name
;)Unity 的序列化器默认情况下不会序列化属性 - 请参阅脚本序列化 -> ObjectNames.NicifyVariableName
。
Serialization of properties
或者 - 正如
这个答案已经提到的那样 - 通过强制序列化属性(不幸的是,无论出于何种原因,都没有记录)正如另一个答案也提到的那样,这有一些问题(例如,参见
this thread) - 最重要的是,对于编辑器脚本来说,隐式生成的序列化字段称为
[field: SerializeField]
public int Age { get; set; }
(包括<PROPERTY_NAME>k__BackingField
和
<
)Unity 编辑器不在检查器中显示属性,您可以在
public string FullName
属性。为 Age 建立公共字段,以便在检查员中看到这一点Unity 无法序列化属性,这在