2016-12-22 24 views
0

不知道發生了什麼問題。將一些代碼外包到另一個類中存在問題。如果下面的代碼在同一個類中,它可以正常工作。Unity3D C# - NullReferenceException雖然附加了文本並且方法正常工作

SearchClient.cs

void callExposeAPi (string id) 
{ 
    ExposeClient exposeClient = (new GameObject("ExposeClient")).AddComponent<ExposeClient>(); 
    exposeClient.loadExpose(id); 
} 

ExposeClient.cs

public Text _baserentText; // is attached to Text in Unity 

public void loadExpose(string id) 
{ 
    [some API stuff...] 
    Debug.Log(result.exposeexpose.realEstate.baseRent); // 480 
    makeUseOfExposeUI(result.exposeexpose.realEstate); 
} 

void makeUseOfExposeUI (Realestate realestate) 
{ 
    Debug.Log(realestate.baseRent); // 480 
    _baserentText.text = realestate.baseRent.ToString(); 
} 

回答

1

我看到發生了什麼,在你的callExposeAPi方法是創建ExposeClient的新實例,然後通過查看您的意見當您通過編輯器指定變量時,您提到的ExposeClient.cs「已附加到Unity中的文本」中,_baserentText與您通過編輯器手動關聯的對象發生關聯,如果您動態創建一個實例,此關聯將會h AVE以不同的方式來完成,或者你可以做這樣的事情:

void callExposeAPi (string id) 
{ 
    ExposeClient exposeClient = GameObject.Find("ExposeClient").GetComponent<ExposeClient>(); 
    exposeClient.loadExpose(id); 
} 

這裏的區別是,你正在使用已經包含ExposeClient附加腳本及其系列化場「_baserentText」早已遊戲對象被定義的不會拋出空例外。

+0

錯誤仍然相同。在Unity Hierarchy中不再有ExposeClient作爲'GameObject'。 – fmielke

+0

ExposeClient.cs已附加到'EventSystem'。我用'ExposeClient exposeClient = GameObject.Find(「EventSystem」)。GetComponent ();'它的工作原理:) – fmielke

+0

@fmielke酷:) – Dilmer

相關問題