2013-07-19 99 views
1

我有兩個腳本。第一個腳本BallControl附加在GameObject上。第二個腳本Hero附加在其他GameObject上。 當我嘗試將值Hero傳遞給BallControl時,我收到一條錯誤消息:「NullReferenceException:對象引用未設置爲對象的實例」 如何解決此問題或者如何將對象上附加的值腳本傳遞給其他腳本上附加的其他腳本?謝謝你的時間。Unity3D將值腳本傳遞給其他腳本

using UnityEngine; 
using System.Collections; 

public class BallControl : MonoBehaviour { 

    public int life = 0; 
    public GameObject hero; 

    void Update() { 

     Hero obj = GetComponent<Hero>(); 
     life = obj.lifeBall; 
     if(life==20){ 
      print("GameOver"); 
     } 
    } 
} 

//

using UnityEngine; 
using System.Collections; 

public class Hero : MonoBehaviour { 

    public int lifeBall = 0; 
    public GameObject ball; 

    void Update() { 
     lifeBall++; 
    } 

} 
+0

我不確定你在這裏的腳本是做什麼的。我所看到的只有英雄會增加lifeBall的每一幀,BallControl會在GameOver中打印出20個數字......在你的遊戲中它有什麼樣的背景,它是什麼類型的遊戲,以及英雄如何與球互動? 我有一種感覺,答案是在'英雄OBJ = GetComponent ();'因爲這試圖獲得一個腳本,而不是另一個單獨的遊戲對象。 –

+0

我只是想增加lifeBall。這些代碼只是我的問題的原型。如果我可以在BallControl中增加人生價值,我可以控制Ballcontrol的動畫。例如:如果生命== 1,則播放animation1。如果生命== 4則摧毀物體。我試圖做到這一點。 –

回答

3

正如你說,Hero連接到另一個遊戲對象,你需要從中得到其他對象的引用。假設GameObject hero是含Hero組分之一,比你需要:

 Hero obj = hero.GetComponent<Hero>(); 

確保您已拖動英雄遊戲對象到構件球控制遊戲對象的hero

無論如何,如果你聲明public Hero hero而不是public GameObject hero並且將英雄的遊戲對象拖到它上面,生活會更容易。比你不需要撥打GetComponent,但可以直接使用它。