c# - 在 Unity3D 中声明类属性的最佳方式
问题描述
我是 Unity 3D 开发的新手,我想知道声明稍后从编辑器分配的类属性的最佳方法是什么。我主要看到两个:
public class MyObject : MonoBehavour {
public GameObject relatedObect;
}
和
public class MyObject : MonoBehavour {
[SerializeField]
private GameObject relatedObect;
}
我知道它是第二种形式,因为封装得到维护,但我不确定。
解决方案
请考虑在示例中您声明了类字段,而不是属性。他们都是一个类的成员,但他们完全不同。
为了这个答案,我将专注于您的示例,所以我将讨论字段。
两者都public
可以[SerializeField] private
让你在 Unity Inspector 中注入一个值,但它们在脚本中的行为不同。
1 - 公共领域
当您希望从另一个类使用或设置它时,您声明一个公共字段。这种选择与封装背道而驰,因为其他脚本可能会访问它。如果您要求该字段可访问,它仍然可能是预期的行为。
2 - [SerializeField] 私有字段
当您想在检查器中设置项目时使用它,但您不希望其他类看到它。此选项更适合封装,因为通过这种方式,其他脚本无法访问或更改此字段。
推荐阅读
- php - 如何在php中将图像文件转换为PDF文件?
- c# - 消费者生产者 - 生产者线程从不执行分配的功能
- azure - 无法在 Azure 上打开 WebDeploy 端口 (8172)
- reactjs - 如何在反应中唯一标识标签
- html - tag within a table tag
- swift - 快速扩展半径时geofire返回重复键
- java - AWS Lambda(Java impl)未在日志中显示错误消息
- mysql - 根据销售数量获取前 10 名用户数据
- amazon-web-services - 公共和私有拓扑中的 Kubernetes 集群
- jquery - Jquery按日期对html表格行进行排序