簡體   English   中英

在Start()中初始化后,Unity3D對象為null

[英]Unity3D Object is null after initialization in Start()

我試圖使一些對象和類進行交互。 我有兩節課。 代碼是相似的。 但是在Start()中初始化對象之后,在class Building_main ,我可以在函數中重用它,而在class House_main則不能(對象為null)。 class Building_mainclass House_main class Building_main的子class House_main

我究竟做錯了什么?

頭等艙:

    public class Building_main : MonoBehaviour {

        public string owner;
        public string producedGoodName;

        private Building_goods goods;
        private House_main house;

        void Start () {
            goods = this.transform.Find("Building_goods").GetComponent<Building_goods>();
            house = this.transform.parent.gameObject.GetComponent<House_main> ();
            UpdateHouseInfo ();
        }

        void UpdateHouseInfo () {
            // reusing objs (house, goods) no error
            house.UpdateGoodInfo (goods.GetGoodByName("sword"), "sword");
        }

第二類:

public class House_main : MonoBehaviour {

    public string owner;

    private House_goods goods;

    void Start () {
        // obj (goods) is not null
        goods = this.transform.Find("House_goods").GetComponent<House_goods>();
       // i can use
       // goods.AddAmountToGoodByName (value, name);
    }

    public void UpdateGoodInfo (int value, string name) {
        // obj (goods) is null
        goods.AddAmountToGoodByName (value, name);
    }
}

看起來我的子類( class Building_main )Start()函數在父類( class House_main )Start()函數之前執行。

因此,在我調用function UpdateGoodInfo ,尚未在class House_main對象goods ,因為我正在使用class Building_main Start() class Building_main對其進行調用

`class Building_main {
        Start() {
          UpdateHouseInfo ();
        }
}`

不知道

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM