首页 > 解决方案 > 什么时候应该使用 public、private 或 [SerializeField]?统一 C#

问题描述

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

标签: c#unity3d

解决方案


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

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

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

声明一个新变量时,默认保持私有,除非您希望从另一个类引用它。然后,在编写代码后,添加[SerializeField][HideInInspector]在必要时在 Inspector 中实现所需的组件外观。


推荐阅读