我知道這比通過腳本參考要容易得多,但是有什么缺點可以通過腳本參考比拖放更方便的結果嗎?
通過檢查器對我的 gameObjs 的參考并沒有太大的信心,它是否會因為代碼修改之類的東西而丟失?我必須再次參考我丟失的所有內容,但如果是一個腳本參考,它可以找到并選擇我認為我做得很好。
什么是最好的?檢查員參考還是腳本參考?,因為我讀到的地方曾經有一個用戶說檢查員參考是最好的,未來,我不明白什么問題會給我帶來讓我擔心的問題。
謝謝您的答復
uj5u.com熱心網友回復:
缺點是,如果您想切換引擎,則必須重新發明 Unity 的 (de)Serialization 系統來遷移這些參考。除此之外,通過拖放參考是 Unity 中的標準。
如果某人有關于哪些物件可以/不能在哪些物件上參考的必要資訊,他們將不必擔心丟失現有參考,并且參考他們可以通過檢查器從腳本參考的資料將被認為是不好的做法。
(實際上唯一的規則是場景物件可以參考預制件和場景物件,但預制件只能參考其他預制件,或預制件本身的特定部分,如子物件)
一個不好的做法是使用GetChild分配對公共欄位的參考:
public GameObject TextBox;
public GameObject ConfirmButton;
void Awake() {
TextBox = transform.GetChild(0);
ConfirmButton = transform.GetChild(1);
}
這在很多方面都很糟糕,包括:
- 如果您更改層次結構中物件的順序,這將中斷
- 您并沒有真正與 UnityEngine 解耦,因為無論如何您都在使用它的層次結構系統
- 您正在為公共欄位分配一個值。這可能會使您和/或從事該專案的其他人感到困惑,認為即使在實體化物件之后,公共欄位的值也會持續存在。(提示:一個好的經驗法則是使檢查器可見的所有欄位不可變,因為在物件的整個生命周期中都不可更改)。
PS:請注意,有些編程模式利用通過腳本傳遞參考來自定義物件的行為或外觀。那些很好!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/525353.html
標籤:C#unity3d
