什么时候应该使用public,private或[SerializeField]? Unity C#

时间:2018-10-20 14:38:15

标签: c# unity3d

我什么时候应该使用public,private或[SerializeField]?哪个最实用?

1 个答案:

答案 0 :(得分:1)

首先,您需要确保您了解公共变量和私有变量之间的区别。 Here是有关不同访问修饰符的正式文档。我强烈建议您通读它,但是一个简单的版本是其他类可以引用公共变量,而私有变量则不能。 想象一下,如果您有一个带有Player字段的Health类。假设根据您的设计,您想要一个GameManager类来检查Player的运行状况,以确定玩家是否还活着。如果Health字段是公开的,则可以通过引用Player.Health 如果Health字段是私有的,则只能在Player类内部进行访问。

在Unity的上下文中,公共字段显示在检查器中,因此,如果将Player组件附加到GameObject,则Health字段将可见并且您将可以在检查器中对其进行编辑。如果该字段是私有字段,则不会在检查器中看到它。

但是,在某些情况下,您希望在检查器中显示一个私有字段,或者在检查器中隐藏一个公共字段。为此,我们有[SerializeField][HideInInspector]。顾名思义,可以在私有字段之前添加[SerializeField]以使其在检查器中可见,可以在公共字段之前添加[HideInInspector]以将其隐藏在检查器中。

声明新变量时,默认情况下将其保持私有状态,除非您希望从另一个类中引用它。然后,在编写代码后,如有必要,请添加[SerializeField][HideInInspector],以在Inspector中获得所需的组件外观。