2015-01-16 115 views
0

我正在Unity中進行冒險遊戲並遇到此小錯誤。我試圖訪問實例化對象內的腳本。下面是代碼的相關行:未將對象引用設置爲Unity中對象的實例

public void CastAbility(Vector3 targetLocation) { 
    print (targetLocation); 
    var target = Instantiate (prefab2, transform.position, transform.rotation) as GameObject; 
    Initialize initialize = target.GetComponent<Initialize>(); 
    initialize.targetLocation = targetLocation; 
} 

從我的理解中,第一行代碼將創建一個名爲prefab2一個遊戲對象。 第二行代碼將允許我訪問prefab2中的組件(一個腳本)。 第三行將更改prefab2腳本中的變量。

對我來說這似乎合乎邏輯,但是我得到一個 「對象引用未設置爲對象的實例」錯誤。

下面是一些細節,如果這有助於找到解決方案。

  1. 如果我只用實例化,並離開了target.GetComponent,該prefab2將產生,不會給我任何錯誤......事實上是連接到prefab2只是正常初始化腳本。

  2. 我從實例化的子對象調用CastAbility函數。

我試着找到最後4小時的解決方案,但無濟於事。 任何幫助,將不勝感激。

+1

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

+0

如果你像這樣施放它會發生什麼:'var target =(GameObject)Instanciate(ommited parameters)'?如果它拋出無效的施法豁免,那麼你處於問題的底部 –

+0

是'initialize' null還是'target' null? –

回答

1

我發現解決方案,遊戲對象被存儲爲一個轉換,而不是一個遊戲對象。這讓我感到困惑,因爲我運行的一個類似的腳本也使用了轉換(它工作得很好)。

+0

'as'命令將嘗試將其轉換爲給定的類型。如果它不是castable,則結果爲null。如果使用(targettype)objectreference轉換它,如果類型不可轉換,則會得到異常 –

相關問題