繁体   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