[英]Best way to declare class properties in Unity3D
我是Unity 3D開發的新手,我想知道什么是聲明稍后從編輯器分配的類的屬性的最佳方法。 我主要看到兩個:
public class MyObject : MonoBehavour {
public GameObject relatedObect;
}
和
public class MyObject : MonoBehavour {
[SerializeField]
private GameObject relatedObect;
}
我知道它是第二種形式,因為封裝是保持的,但我不確定。
請在示例中考慮您聲明的類字段 ,而不是屬性 。 他們都是一個班級的成員,但他們是完全不同的。
為了這個答案,我將專注於你的例子,所以我將談論領域。
public
和[SerializeField] private
允許您在Unity Inspector中注入一個值,但它們在腳本中的行為方式不同。
當您希望從另一個類使用或設置公共字段時,可以聲明該字段。 這種選擇與封裝相反,因為其他腳本可能會訪問它。 如果您需要可訪問該字段,它仍可能是預期的行為。
如果要在檢查器中設置項目,但是不希望其他類看到它,則使用此選項。 此選項更適合封裝,因為這樣沒有其他腳本可以訪問或更改此字段。
如果你想“正確地”做事,那么第二種方法就是去。 但遺憾的是,有一個“錯誤”會通過編輯器向您設置的每個私人發出警告。 我在github上看到它最終得到修復,但在此期間如果要刪除警告,可以將變量置於pragma warning disable 0649
和pragma warning restore 0649
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.