[英]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.