2014-04-08 69 views
0

我有兩個cs文件,Main.cs和Menu.cs.在Main.cs文件中的OnGUI事件中,我從Menu.c中調用方法。StartCoroutine得到錯誤NullReferenceException

private void OnGUI() 
{ 
    Menu menu=new Menu(); 
    menu.Create_Menu(); 
} 

而在Menu.cs.中。

public void Create_Menu() 
{ 
    StartCoroutine(LoadCar()); 
} 
private IEnumerator LoadCar() 
{ 
    //Load Object 
    Download download; 
    download=new Download(); 
    GameObject go = null; 
    yield return StartCoroutine(LoadAsset("http://aleko-pc/3dobjects?key=1017&objecttype=1","car13",(x)=>{go = x;})); 
} 

我得到錯誤的NullReferenceException UnityEngine.MonoBehaviour.StartCoroutine(IEnumerator的例程)

如果我複製私人的IEnumerator LoadCar()方法Main.cs類,並調用從OnGUI它的工作原理。

也許我不瞭解Coroutines的工作區域,任何機構都可以幫助我嗎?

+0

可能重複[什麼是NullReferenceException,我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它) – LearnCocos2D

回答

0

首先,OnGUI方法被稱爲每一幀,我不認爲你想下載資產的每一幀。

其次,您需要確保菜單從MonoBehviour派生並添加到視圖層次結構中。

一個更好的方法是添加菜單到遊戲物體的組件(也許貼有主要腳本相同),並調用Create_Menu上的菜單的方法Start

+0

感謝您的回覆,我會回答你的問題。首先,我顯示的腳本是我的項目的一部分,實際上我單擊下載資源到我的菜單按鈕。第二,Menu類是從MonoBehavior派生的,並附加在GameObject上。第三,我的菜單是從按鈕組合的,所以它需要在新框架中重繪,這就是爲什麼它在OnGUI中。 – tungi