c# - 什么时候应该使用 public、private 或 [SerializeField]?统一 C#
问题描述
什么时候应该使用 public、private 或 [SerializeField]?哪个最实用?
解决方案
首先,您需要确保了解公共变量和私有变量之间的区别。这是不同访问修饰符的官方文档。我强烈建议您通读它,但一个简单的版本是公共变量可以被其他类引用,而私有变量不能。想象一下,如果您有一个Player
带有Health
字段的类。假设根据您的设计,您需要一个GameManager
类来检查Player
的健康状况以确定玩家是否还活着。如果该Health
字段是公共的,则可以通过引用来实现。Player.Health
如果该Health
字段是私有的,则只能在Player
类内部访问。
在 Unity 的上下文中,公共字段显示在检查器中,因此如果您将Player
组件附加到 a GameObject
,该Health
字段将是可见的,您将能够在检查器中对其进行编辑。如果该字段是私有的,您将不会在 Inspector 中看到它。
但是,在某些情况下,您希望在 Inspector 中显示私有字段或在 Inspector 中隐藏公共字段。为了这些目的,我们有[SerializeField]
和[HideInInspector]
。顾名思义,[SerializeField]
可以在私有字段之前添加以使其在检查器中可见,并且[HideInInspector]
可以在公共字段之前添加以将其隐藏在检查器中。
声明一个新变量时,默认保持私有,除非您希望从另一个类引用它。然后,在编写代码后,添加[SerializeField]
并[HideInInspector]
在必要时在 Inspector 中实现所需的组件外观。
推荐阅读
- javascript - 如何在 Bootstrap 的页面刷新时保持当前 Accordion 处于活动状态
- php - 无法从连接表中检索数据
- java - 值 1 和值 2 的偶数
- c++ - 标准库是否提供类型列表?
- javascript - 反应路由器记忆路由向导
- android - 使用 gradle 为带有风味的库上传存档
- linq - 如何使用 linq 遍历所有图像,但只搜索这些图像中字符串的一部分?
- asp.net-core - 错误 CS0246 找不到类型或命名空间名称“Microsoft”
- android-studio - 如何从 GitHub 存储库禁用 SSH 并仅使用 HTTPS 进行推送和获取?
- r - R - 如何从人工数据中预测值