2017-05-28 14 views
0

Unity3D iOSゲームで以下のエラーが発生しました。ここでUnityEngine.Objectに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

コードは次のとおりです。ここで

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 
      } 
     } 

スクリーンショット この問題を解決する方法enter image description here

enter image description here

のですか?もうグーグルではありません。

+1

listBlocksの場合はどのようなタイプですか? – Programmer

+0

@Programmer public List listBlocks; – iPhoneProcessor

+0

スクリプト 'Block'はMonoBehaviorから継承していますか?また、スクリプト内にそのコードがありますが、 'MonoBehavior'から継承していますか?あなたが気にしないなら、あなたのUnityバージョンは何ですか? – Programmer

答えて

2

を、Object返しObject.Instantiateを呼び出そうとします。

Unityの最新バージョンでは、Instantiateを呼び出すとが呼び出され、GameObjectが返されるため、GameObjectにキャストする必要はありません。このコードは5.6バージョンでコンパイルできましたが、バージョン番号4.6.9ではコンパイルできませんでした。

用途:

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

OR Helliumのanswerで述べたようにGameObjectにキャストします。

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

は、Helliumの固定問題から上記の4.6.9 broに固定されていません。あなたのサポートに感謝します – iPhoneProcessor

+0

これは問題ではなく、修正されていません。私は上記のように5.6ではなく4.6.9で動作すると言った。より多くの機能がUnityの最新バージョンに追加されたので、あなたはそれをキャストする必要はありません。答えをもう一度読んでください。 – Programmer

関連する問題