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

==========

Unity用の3Dモデルを探してる方、欲しい方ご注目!

自作のUnity用3Dモデルを販売(基本的に無料版あり)してますので、
以下のリンクより一度ご覧ください。

Unity用3Dモデルを見てみる

==========


スポンサードサーチ

関連記事

no image

unityでオブジェクトを移動させたい人は読んでください。

どうも、チャーさんです。   あなたはunityでオブジェクトや、 プレイヤーなど自由自在に移動させたい、 そう思っていませんか?     キーボードの上下左右の矢印ボタ …

no image

unityで弾を発射する方法(簡単3ステップ)

どうも、大石です。   あなたは、unityで弾を発射したいですか? この記事を読めば、あなたはunityで弾を発射 できるようになります。   なので、弾を発射したければ、 この …

no image

unityで敵を索敵する方法

どうも、大石です。   あなたはunityでプレイヤーが敵を索敵する 機能をつけたいですか?   この記事を読めば、敵を索敵する 機能を簡単に作れますよ。   ということ …

no image

unityでオブジェクトをスクリプトで削除する方法

どうも、チャーさんです。   あなたはunityでゲームオブジェクトを、 スクリプトなどから削除したいですか?   この記事では、関数を使い、 ゲームオブジェクトを削除する方法を書 …

no image

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

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

no image

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

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

no image

unityで弾の発射の向きを敵に向ける方法(自動)

どうも大石です。   あなたはunityで弾を発射するときの向き をコントロールしたいと思っていませんか?   この記事を読めば、あなたはunityで 弾を敵に向かって発射させれる …

no image

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

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

no image

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

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

no image

unityでオブジェクトの色をスクリプトから変更する方法

どうも大石です。   この記事ではunityでオブジェクトの色を スクリプトから変更する方法を書いてますので、   この記事を読めばあなたはスクリプトから オブジェクトの色を変更で …

no image

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

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

no image

Unityでオブジェクトに重力を1分以内につける方法

  どうも、チャーさん(@chaa___san)です。   あなたはUnityでオブジェクトに重力をつけたいですか?   この記事ではUnityでオブジェクトに、 重力を …

no image

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

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

no image

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

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

no image

unityでボタンクリックで他のオブジェクトの色を変更するスクリプト

どうも大石です。   あなたはunityでボタンをクリックしたら、 他のオブジェクトの色を変更するという スクリプトを書きたいですか?     この記事を読めば、あなたは …

最新記事

チャーさん

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

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

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