在C#中,[SerializeField]
是一个Unity引擎特有的属性(Attribute),用于指示一个私有字段(private field)应该被序列化。这意味着即使该字段是私有的,Unity的序列化系统也能够访问并保存它的值,这对于在游戏运行时保存和加载游戏状态非常有用。
通常,Unity使用公共字段(public fields)和属性(properties)来进行序列化,因为这些成员在类的外部是可访问的。但是,有时你可能希望某些数据在类的外部是不可访问的(即私有),但仍然需要它们被序列化。在这种情况下,[SerializeField]
属性就派上用场了。
下面是一个使用[SerializeField]
的例子:
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
[SerializeField]
private int myPrivateValue = 0;
void Start()
{
// 即使myPrivateValue是私有的,它仍然会被Unity序列化。
}
}
在这个例子中,myPrivateValue
字段被标记为[SerializeField]
,这告诉Unity在序列化这个类的实例时包含这个字段,即使它是私有的。这样,myPrivateValue
的值就可以在游戏运行时被保存和加载,同时它的访问权限保持在私有,符合良好的封装实践。