我在Unity中創建2D宇宙飛船遊戲。我有一個標題爲「Player」的對象,並附有此腳本。在腳本中,我代表遊戲者的船這個類:List.Count引發空引用異常
public class Ship : MonoBehaviour
{
public List<Weapon> weaponsList;
void Start()
{
weaponsList = new List<Weapon>();
weaponsList.Add(new Weapon());
weaponsList.Add(new Weapon());
}
}
這個階級(在同一腳本中)代表一種武器:
public class Weapon
{
//properties here
}
現在,當我嘗試引用weaponsList得到List.Count使用此代碼(來自不同的腳本),它拋出一個NullReferenceException,稱未將對象引用設置到對象的實例:
Ship ship = GameObject.Find("Player").GetComponent<Ship>();
if (ship.weaponsList.Count >=2)
{
//do stuff
}
但船上其他財產我嘗試訪問作品很好。有人可以幫忙嗎?如果您需要其他上下文或代碼,請告訴我,我會進行必要的修改。
編輯:啓動方法是Unity特有的,並且在腳本初始化時始終默認調用。
這解決了這個問題。我對這個問題做了一個編輯,說明在腳本初始化之前,Unity總是調用Start()方法,所以我認爲它的工作方式與構造函數相同。感謝您的建議。 –
該解決方案導致'weaponList'被初始化兩次。如果在調用'Start()'方法之前有'weaponList'做了任何事情,這會導致奇怪的行爲。最好從'Start()'方法中移除第二次初始化,並且最好確保'weaponList'只能在「Ship」類中初始化一次和/或僅在內部初始化。 –