[Unity]FindGameObjectsWithTagで複数のオブジェクトを取得するときにエラーが出る

  • 更新日:
  • 公開日:

UnityでFindGameObjectsWithTagメソッドを使い、複数のオブジェクトをタグで指定して全部取得しようとしたときにエラーが出たのでコレについてメモです。

FindGameObjectsWithTagで複数オブジェクト取得時にエラー

以下のエラーが出ました。(言語はC#です)

Cannot implicitly convert type `UnityEngine.GameObject[]' to `UnityEngine.GameObject'

このエラーが出たときのソースコードはこんな感じです。特定のタグのオブジェクトを全てDestroyメソッドで削除する内容です。

void obstacleDestroy() {
 GameObject obstacles = GameObject.FindGameObjectsWithTag("Obstacle");
 foreach(GameObject obs in obstacles) {
 Destroy(obs);
 }
}

このソースコードのどこが間違っているかというと、2行目の型指定が原因です。FindGameObjectsWithTagの返り値は配列なので、2行目をこうしてやります。

GameObject[] obstacles = GameObject.FindGameObjectsWithTag("Obstacle");

GameObject型の後ろに”[]”(大括弧)を付け足し、「これは配列ですよ~」と明示的に宣言します。これで解決します。

参考になった書籍はこちらです。(P261 下部)

Unityのリファレンスを見ると、2つ目以降のサンプルには型宣言にこの大括弧が書かれていて、1つ目のサンプルには書かれていない点が気になります。

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone