我什么时候应该使用public,private或[SerializeField]?哪个最实用?
答案 0 :(得分:1)
首先,您需要确保您了解公共变量和私有变量之间的区别。 Here是有关不同访问修饰符的正式文档。我强烈建议您通读它,但是一个简单的版本是其他类可以引用公共变量,而私有变量则不能。
想象一下,如果您有一个带有Player
字段的Health
类。假设根据您的设计,您想要一个GameManager
类来检查Player
的运行状况,以确定玩家是否还活着。如果Health
字段是公开的,则可以通过引用Player.Health
如果Health
字段是私有的,则只能在Player
类内部进行访问。
在Unity的上下文中,公共字段显示在检查器中,因此,如果将Player
组件附加到GameObject
,则Health
字段将可见并且您将可以在检查器中对其进行编辑。如果该字段是私有字段,则不会在检查器中看到它。
但是,在某些情况下,您希望在检查器中显示一个私有字段,或者在检查器中隐藏一个公共字段。为此,我们有[SerializeField]
和[HideInInspector]
。顾名思义,可以在私有字段之前添加[SerializeField]
以使其在检查器中可见,可以在公共字段之前添加[HideInInspector]
以将其隐藏在检查器中。
声明新变量时,默认情况下将其保持私有状态,除非您希望从另一个类中引用它。然后,在编写代码后,如有必要,请添加[SerializeField]
和[HideInInspector]
,以在Inspector中获得所需的组件外观。