首页 > 解决方案 > 在 Unity3D 中声明类属性的最佳方式

问题描述

我是 Unity 3D 开发的新手,我想知道声明稍后从编辑器分配的类属性的最佳方法是什么。我主要看到两个:

public class MyObject : MonoBehavour {

    public GameObject relatedObect;

}

public class MyObject : MonoBehavour {
    [SerializeField]
    private GameObject relatedObect;

}

我知道它是第二种形式,因为封装得到维护,但我不确定。

标签: c#unity3d

解决方案


请考虑在示例中您声明了类字段,而不是属性。他们都是一个类的成员,但他们完全不同。

为了这个答案,我将专注于您的示例,所以我将讨论字段。

两者都public可以[SerializeField] private让你在 Unity Inspector 中注入一个值,但它们在脚本中的行为不同。

1 - 公共领域

当您希望从另一个类使用或设置它时,您声明一个公共字段。这种选择与封装背道而驰,因为其他脚本可能会访问它。如果您要求该字段可访问,它仍然可能是预期的行为。

2 - [SerializeField] 私有字段

当您想在检查器中设置项目时使用它,但您不希望其他类看到它。此选项更适合封装,因为通过这种方式,其他脚本无法访问或更改此字段。


推荐阅读