2017-05-28 1 views
0

Ich habe unten Fehler in Unity3D iOS Spiel.UnityEngine.Object enthält keine Definition für GetComponent

Assets/Scripts/Block/BlockMaker.cs(24,55): error CS1061: Type `UnityEngine.Object' does not contain a definition for `GetComponent' and no extension method `GetComponent' of type `UnityEngine.Object' could be found (are you missing a using directive or an assembly reference?) 

enter image description here

Hier Code:

Block block = null; 

     for (int i = 0; i < listBlocks.Count; ++i) 
     { 
      if (listBlocks[i].GetComponent<Block>().type == type) { 
       block = Instantiate(listBlocks[i]).GetComponent<NormalBlock>(); // Error for this line 
      } 
     } 

Hier Screenshot ist enter image description here

enter image description here

Wie dieses Problem zu beheben? Bereits gegoogelt..kein mir geholfen zu beheben.

+1

Welcher Typ ist listBlocks? – Programmer

+0

@Programmierer öffentliche Liste listBlocks; – iPhoneProcessor

+0

Erbt das Skript 'Block' von MonoBehavior? Auch das Skript, in dem der Code enthalten ist, erbt er von 'MonoBehavior'? Wenn es Ihnen nichts ausmacht, was ist Ihre Unity-Version? – Programmer

Antwort

2

In der alten Version von Unity, den Aufruf der Funktion Instantiate, versuchen Object.Instantiate zu nennen, die eine Object zurückgibt.

In der neuesten Version von Unity rufen Sie ruft GameObject.Instantiate, die eine GameObject zurückgibt, so dass Sie es nicht einmal zu einem GameObject werfen müssen. Dieser Code konnte mit 5.6 Version aber nicht mit Ihrer Version 4.6.9 kompilieren.

Verwendung:

block = GameObject.Instantiate(listBlocks[i]).GetComponent<NormalBlock>(); 

OR warf es auf einen GameObject als answer in Hellium des erwähnt.

GameObject obj = Instantiate(listBlocks[i]) as GameObject; 
block = obj.GetComponent<NormalBlock>(); 
+0

nicht in 4.6.9 bro behoben, über die Antwort von Hellium behobenen Problem. Vielen Dank für Ihre Unterstützung. – iPhoneProcessor

+0

Es ist kein Problem und es ist nicht behoben. Ich sagte, es funktioniert in 5.6 nicht 4.6.9, wie Sie oben erwähnt haben. In der neuesten Version von Unity wurden weitere Funktionen hinzugefügt, sodass Sie sie nicht mehr umsetzen müssen. Bitte lesen Sie die Antwort noch einmal. – Programmer

Verwandte Themen