2014-06-11 17 views
-2

所以我有一個腳本EnemySpawner。我試圖在每次敵人被摧毀時在那裏調用一個函數,這發生在我的射彈腳本中。我不斷收到這樣的:當向另一個腳本調用函數時引用空異常

的NullReferenceException:未設置爲一個 對象Projectile.OnTriggerEnter的一個實例(UnityEngine.Collider otherObject) (57在資產/腳本/ Projectile.cs)對象引用

繼承人什麼IM基本上是做在我彈腳本:

public EnemySpawner enemyspawner; 

void OnTriggerEnter(Collider otherObject) 
{ 
     //do stuff 
     Destroy(otherobject.GameObject); 

     //call function 
     enemyspawner.test(); 


     //i have also tried this 
     //enemyspawner.GetComponent<EnemySpawner>().test(); 

     //and 
     //EnemySpawner enen= new EnemySpawner(); 
     //enen.test(); 


} 

繼承人在我enemyspawner腳本做什麼IM

public class EnemySpawner : MonoBehaviour { 
public void test() 
{ 
    Debug.Log ("CALLED"); 
} 

} 

我在這裏丟失了什麼?

回答

2

你還沒有實例化它enemyspawner。你被稱爲它的方法而不會創建一個對象。像

enemyspawner = new EnemySpawner(); 

之前調用你的方法

enemyspawner.test(); 
+0

哇哦。這工作。 C#很奇怪,但我喜歡它。唯一的事情是現在我得到一個警告:你正在嘗試使用'new'關鍵字創建一個MonoBehaviour。這是不允許的。 MonoBehaviours只能使用AddComponent()添加。另外,你的腳本可以繼承ScriptableObject或者根本沒有基類。UnityEngine.MonoBehaviour:.ctor() EnemySpawner:.ctor() 子彈:OnTriggerEnter(Collider)(在Assets/Scripts/Projectile.cs:57) – Prof

相關問題