Oops! It appears that you have disabled your Javascript. In order for you to see this page as it is meant to appear, we ask that you please re-enable your Javascript!

unity

[unity]foreach内でget componentを使う方法

投稿日:

Pocket

うも、チャーさんです。

 

この記事ではunityのforeachループで

get componentする方法を書きます。

 

 

なのでこの記事を読めば、

 

foreachを使い複数のオブジェクトの

コンポーネントを取得することが

できるようになります。

 

ゲームで言えば全ての敵オブジェクトの

コンポーネントを取得とかもできます。

 

 

ということでforeach内でget component

を使い上記のようなことをしたい場合、

このまま読んでみてください。

 

 

スポンサードサーチ

unityでforeach内でget componentする方法

 

でまず先に記述方法だけ知りたい

場合のためにforeachでget componentするための

記述法を書いときます。

 

それは以下です。

 

foreach(変数型 変数名 in 配列名){

変数名.GetComponent<コンポーネント名>();

}

 

これで配列に格納した、要素の

コンポーネントをループを回して取得できます。

 

スポンサードサーチ

unityでforeach内でget componentする手順詳細

 

でここからは上の説明だけでは

わからないという場合のために

やり方を書いておきます。

 

 

foreachでget componentする方法ですが、

 

1、まずは取得したいオブジェクト達を

入れる配列を用意する。

 

2、配列の中に、要素を取得する。

 

3、foreachの中で、

変数名.GetComponent<取得したいコンポーネント名> ();

を書けばokです。

 

 

とゆうことでコード例を出しながら詳しく説明します。

 

 

配列の準備

 

まず、foreachを使うには、配列が

必要です。

 

というのもforeachとは配列にある要素数

だけループを回すというものだからです。

 

なのでスクリプトの中で、

配列の変数名を書きます。

 

 

 

で、unityのC#での配列の宣言の書き方は、

変数型[] 変数名;

です。

 

配列の際は変数型の後ろに[]を

つけるのに注目しましょう。

 

 

コード例をだすと、

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class forExplain : MonoBehaviour {

GameObject[] enemies ; //ここで配列を宣言

}

 

という感じです。

(サンプルコードでは複数の敵ゲームオブジェクトを

取得する体で説明していきます)

 

 

配列に要素を格納する

 

で、これで配列の宣言はできたので、

次にこの配列に要素を入れましょう。

 

で要素の取得方法ですが、

ここではシーン上に複数のオブジェクトが

設置してあるという体で書きます。

 

 

でその場合、

 

GameObject.FindGameObjectsWithTag (“取得したいタグ名”);

という記述が使えます。

 

で、この記述は何かと言うと、

複数の任意のゲームオブジェクトを見つけて

配列に要素として突っ込んでくれます。

 

 

オブジェクトの選り分けですが、

()内の取得したいタグ名で、選り分けできまして、

任意のタグがついてるオブジェクトを取得してくれます。

 

なので敵オブジェクト達を配列に

入れたければ、

 

GameObject.FindGameObjectsWithTag (“enemy”);

と記述して、敵オブジェクトのタグの部分に、

enemyをつけましょう。

 

 

するとenemyというタグがついた

オブジェクトのみが配列に格納されます。

 

 

タグで配列に取得する要素を分ける

 

ちなみにオブジェクトへのタグの付け方は、

オブジェクトを選択し、

インスペクター上にあるtagをクリックし、

 

unityタグ

Add Tagをクリック。

 

次に、list is emptyの横の+を

クリックし、

 

unityタグの追加

 

例えばここでは例として、

enemyと書いてsaveボタンをクリックしましょう。

 

するとタグ一覧に表示されるようになります。

 

unityタグを選ぶ

 

選んでクリックしましょう。

するとオブジェクトにタグがつきます。

 

そしてサンプルコードとしましては、

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class forExplain : MonoBehaviour {

GameObject[] enemies ; //ここで配列を宣言

// Use this for initialization
void Start () {
enemies = GameObject.FindGameObjectsWithTag (“enemy”);

//ここで配列に要素を取得
}

}

 

という感じでして、

上記コードでは、

再生ボタンを押した瞬間に、

 

enemyというタグがついたオブジェクトを

探して、enemyタグがついたオブジェクトを

全て配列に格納してくれます。

 

 

foreachループでget componentする

 

なのであとはここまでくれば、あとは

foreachでget componentするだけです。

 

でforeachでget componentするですが、

記述法をもう一度説明しますと、以下です。

 

foreach(変数型 変数名 in 配列名){

変数名.GetComponent<コンポーネント名>();

}

 

 

この記述で配列に代入した要素全ての、

コンポーネントをループを回して取得できます。

 

ちなみに上記だとわかりにくいかと思うので、

サンプルコードをかくと、

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class forExplain : MonoBehaviour {

GameObject[] enemies ; //ここで配列を宣言

// Use this for initialization
void Start () {
enemies = GameObject.FindGameObjectsWithTag (“enemy”);

//ここで配列に要素を取得
}

void Update () {
 foreach (GameObject enemy in enemies) {
  代入先の変数名 = enemy.GetComponent<コンポーネント名> ();
 }
}//ここでfroeach内でget componentさせる

}

 

という感じです。

 

こうすれば、foreachループの中で、

それぞれのオブジェクトのコンポーネントを

取得できるので、

 

例えば全ての敵のhpをループで取得

することも可能です。

 

 

またタワーディフェンス系で必要な、

全ての敵オブジェクトとタワーとの

距離を測ることも可能になります。

 

スポンサードサーチ

まとめ

 

ちょいと難しかったと思いますが、

まとめです。

 

foreach内でループするには、

配列を用意し、要素を取得し、

foreach内でget componentの記述を書きましょう。

 

 

さて、ということで早速あなた自身でも

チャレンジしてみましょう。

 

まずはスクリプトを用意し、

配列の宣言から初めてみてください。

 

ということで、以上でforeachで

複数のオブジェクトのコンポーネントを

get componentする方法でした。

 

 

それでは、読んでもらってありがとうございました。

 

チャーさん

-unity

スポンサードサーチ

関連記事

no image

unityで敵に近づくと追いかけてくるコードとコードの解説記事

どうも、チャーさんです。   あなたはunityで敵に近づくと、 プレイヤーを追いかけてくるという機能を つけたいと思っていませんか?   この記事ではそれを実現するコードと方法や …

no image

unityで敵を移動させる方法(詳細にわかりやすく説明します)

どうも、チャーさんです。   あなたはunityで敵を移動させたい、 そう思っていませんか?   コライダーなどでもできるが、他の方法が ないかと探してませんか?   & …

no image

unityで攻撃に当たり判定をつける方法

どうも、チャーさんです。 あなたはunityで攻撃に当たり判定をつけたいですか?   この記事では、当たり判定をつける 方法を書いてるので、読めば当たり判定をつけれます。   とい …

no image

unityでキー入力で攻撃する方法(3分以内にできます)

どうも、チャーさんです。   あなたはunityでキー入力による攻撃を したいですか?   この記事ではunityでキー入力で攻撃を する方法を書いてますので、あなたがこれを読めば …

no image

unityで地形を作る方法「初心者でもできるように丁寧に説明してます」

どうも、チャーさんです。   あなたはunityでいい感じの地形を作りたい。 でも、やり方がわからない。と悩んでいませんか?   この記事では、unityで地形を作る方法を、 ステ …

no image

unityアセットの使い方を初心者でもわかるように説明。

  どうも、チャーさんです。   あなたはunityのアセットの使い方が、 わからず困ってませんか?   この記事ではunityのアセットの使い方を、 1から説明してます …

no image

unityで矢印キーでオブジェクトを移動させるには(3d)

どうも、チャーさんです。 あなたはunityで矢印キーで3dオブジェクトを 移動させたいですか?   この記事では矢印キーによる3dオブジェクトの 移動を実現する方法を書いてるので、 読めば …

no image

unityでのダンジョンの簡単な作り方(コードコピペで作れます)

どうも、チャーさんです。   あなたは、unityでダンジョンを作りたいと 思っていませんか?   この記事ではunityでのダンジョンの作り方を 説明してまして、本記事を読めば …

no image

unityでオブジェクトを回転させる方法「1分でできます」

どうも、チャーさんです。   あなたはunityでオブジェクトを回転させたいですか?   unityでゲームなど作るとオブジェクトを 回転させたい場面がありますよね。   …

no image

unity上でblender作成モデルが透ける時の解決法

どうも、チャーさんです。   あなたはunityにblenderで作ったモデルを 持ってきたものの、面が透ける現象が起こって 困っていませんか?     この記事は、透け …

no image

unityで他のオブジェクトを取得する方法

どうもチャーさんです。   あなたはunityで他のオブジェクトを 取得したいがわからず困ってますか?   この記事では、unityで他のオブジェクトを 取得する方法を書いてます。 …

no image

blenderで作ったモデルをunityにインポートする方法「簡単です」

どうも、チャーさんです。   あなたはblenderで作ったものを、 unityで表示(インポート)したいと、 思っていませんか?   この記事では、あなたが作ったblenderの …

no image

unityでコンポーネントを取得する方法を詳しく解説

どうも、チャーさんです。 あなたはunityでコンポーネントを取得する方法を 探していますか?   この記事ではコンポーネントを取得する方法、 その際の変数宣言の書き方や、 コンポーネント名 …

no image

unityでoculus questの開発をしたい方必見!手順まとめました

どうも、チャーさんです。   あなたはunityでoculus questの 開発をしたい、そう思ってませんか?     この記事ではunityでoculus quest …

no image

unityでカメラを追従させる簡単なコードと方法の説明をする記事

  どうも、チャーさんです。   あなたはunityでカメラの追従をさせたい、 こう思ってませんか?   この記事ではオブジェクトをカメラで追従させる、 (カメラが追いか …

最新記事

チャーさん

プログラミング・筋トレ・unity系の記事などを書いてます。

大学卒業後→開業→個人事業主7年目ぐらいです。webサイト制作したり、unityでゲーム開発しております。

youtubeもやってまして、主にプログラミング動画とかunity系の動画をあげてるので見てください。