![](/img/trans.png)
[英]Instantiated class with “new” keyword is null after Start method has ended and button is pressed. Unity3d
[英]Unity3D Object is null after initialization in Start()
我试图使一些对象和类进行交互。 我有两节课。 代码是相似的。 但是在Start()中初始化对象之后,在class Building_main
,我可以在函数中重用它,而在class House_main
则不能(对象为null)。 class Building_main
是class 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.