unity

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

投稿日:

Pocket

うも、チャーさんです。

あなたはunityでコンポーネントを取得する方法を

探していますか?

 

この記事ではコンポーネントを取得する方法、

その際の変数宣言の書き方や、

コンポーネント名の見つけ方など、

 

コンポーネント取得に関して必要なことを網羅的に

書いてます。

 

 

なのでこの記事を読めばあなたは、

コンポーネント取得で困らなくなるでしょう。

 

ということでunityでコンポーネントを取得したいなら

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

 

スポンサードサーチ

unityでコンポーネントを取得する方法

 

unityでコンポーネントを取得する方法は、

GetComponent<取得したいコンポーネント名>();という

unityで用意されてる関数を使えばokです。

 

その理由ですが、

 

この関数を使うことで、

unityがそのオブジェクト(スクリプトがついてるオブジェクト)

につけてるコンポーネントを取得できるからです。

 

 

書き方の具体例

 

で、この関数の書き方としては、変数宣言をした後に

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

とMono Developなどのエディターに書けばokです。

 

具体例を出しますと、

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

public class ここはクラス名 : MonoBehaviour {

    public Animator animation; ←ここで変数型と変数名を宣言

     ↑変数型 ↑変数名

void Start () {
        animation = GetComponent<Animator> ();

   ↑ここでアニメーションのコンポーネントを取得

}

 

みたいなように書くと、

アニメーション情報(コンポーネント)を取得し、

animation変数に格納することができます。

 

コンポーネントを取得する際の変数宣言について

 

コンポーネントを取得する際には、

変数に格納することが多いです。

 

がコンポーネント取得の際の変数宣言

どう書けばいいかわからん、、と

疑問があるかと思いますので、そこに答えます。

 

 

でまず変数宣言の前提として

Unityでは、Public か Private 変数型 変数名

と書いて変数宣言します。

 

先ほどの例

 

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

public class ここはクラス名 : MonoBehaviour {

    public Animator animation; ←ここで変数型と変数名を宣言(これです)

     ↑変数型 ↑変数名

}

 

変数宣言してますね。

 

でさらに、コンポーネント取得の際の変数型は取得したい

コンポーネントに対応した変数型を書く必要があります。

 

 

例えば、オブジェクトについてる

アニメーションコンポーネントを

取得したい場合、

 

 public Animator animation; のように

変数型のとこにAnimatorと書きます。

 

このようにコンポーネントに対応した変数型

を書く必要があるのです。

 

 

その理由はそういう仕組みになってるからです。

これはそう受け止めてください。

 

で、その変数型なんて書けばいいかわからん、

となると思いますので解決策を言います。

 

Inspectorをみましょう。

 

 

以下はInspectorの画像です。

Inspector画面

 

上からTransform、Animator、Knight、Box Collider

などと書いてますよね。

これらを変数型のとこに書けばいいのです。

 

例えばアニメーションコンポーネント用の変数宣言なら

Public Animator 変数名;

 

コライダーコンポーネント取得用の変数宣言なら、

Public Box Collider 変数名;

と書いて変数宣言すればいいです。

 

 

このように変数型をなんて書けばいいか

問題の答えはInspector上にのってます。

 

なので変数宣言の際はInspectorをみましょう。

 

 

コンポーネント名がわからない場合

 

で、GetComponent<取得したいコンポーネント名>();

でコンポーネントは取得できるのですが、

 

取得したいコンポーネント名とか

言われてもなんて書くのかわからない

という場合に向けて答えを書いときます。

 

 

内容がダブりますが、

このコンポーネント名は全部、

Inspectorに書いてあります。

 

なのでInspectorを見れば解決です。

 

 

ということで下の画像を見てみてください。

Inspector画面

先ほどと同じ画像ですが、

 

上からTransform、Animator、Knight、Box Collider

とコンポーネント名が書いてあります。

 

 

なのでこれを、

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

の取得したいコンポーネント名のとこに書けばOkでして、

 

例えばアニメーション情報を取得したいなら

 GetComponent<Animator> ();

と書けばいいですし、

 

コライダーの情報を取得したいなら、

 GetComponent<Box Collider> ();

と< >の中に書けばいいのです。

 

 

そうすればそのコンポーネントを

取得できますので、コンポーネント名問題は、

Inspectorをみて解決してください。

 

 

スポンサードサーチ

unityでコンポーネントを取得する理由は?

 

で、ちなみになんでそもそも

コンポーネントを取得する必要があるんだ?

と疑問に思ったかもしれませんので、補足します。

 

結論から言えば、取得するのは、

コンポーネントを操作するのに、

まず取得という行為が必要だからです。

 

 

あなたもご存知の通りunityではスクリプトを使えば、

色々自由にオブジェクトやコンポーネントを

操作できます。

 

例えばパソコンのキーボードのAボタンを

押した時にプレイヤーが剣で攻撃する、

アニメーションを発動させるみたいなことができます。

 

 

で、そういったような操作をするときに、

unityではまずは動かしたい要素を

取得する必要があるのです。

 

 

あなたが触ったことがあるかわからないですが、

イメージとしてはJavascriptのDOMに似ています。

 

あれもまずは操作したい要素(pタグとか)を取得して、

それで好きなように操作(ボタンを押したら色を変えるとか)

するという仕組みです。

 

 

unityのスクリプトもそういう仕組みで

色々オブジェクトやコンポーネントを

操作していくので、

 

まずはコンポーネントを取得する

必要があるのです。

 

そうすれば、キーボードの操作で

攻撃アニメーションをするとか、

色々ゲームちっくなこともできます。

 

 

というわけでそもそもコンポーネントを取得する

理由はオブジェクトやコンポーネントを操作するために

必要なので、それを理解しておきましょう。

 

スポンサードサーチ

まとめ

 

というわけでまとめです。

 

unityでコンポーネントを取得したければ、

GetComponent<ここに取得したいコンポーネント名>();

を使いましょう。

 

そうすればあとはそのコンポーネントを

unityで用意されてる他の関数で、

操作すれば色々スクリプトで操作できます。

 

 

変数型やコンポーネント名はInspector上に

書いてます。迷ったらそこをみましょう。

 

でコンポーネントを取得したら

次はスクリプトで色々操作をすることが

できます。

 

 

ですが具体的な操作の方法に関しては、

また別記事に書こうと思うので、

書いたらここにリンクを乗せておきます。

 

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

 

チャーさん

 

-unity

==========

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

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

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

==========


スポンサードサーチ

関連記事

no image

unityで動く床にのるとオブジェクトが滑る場合の解決法

どうも、大石です。   unityで動く床を作ったのに オブジェクトが上に乗ると滑って 一緒に付いて行かずに落ちる、、   みたいなことで悩んでますか?     …

no image

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

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

no image

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

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

no image

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

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

no image

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

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

no image

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

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

no image

unityでprefabを複製する(スクリプトで)方法

どうも、大石です。 あなたはunityでprefabをスクリプトで複製 したいですか?   この記事を読めば、あなたはprefabをスクリプトで 複製できるようになります。   な …

no image

unityで敵を索敵する方法

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

no image

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

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

no image

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

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

no image

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

どうも、チャーさんです。   この記事ではunityのforeachループで get componentする方法を書きます。     なのでこの記事を読めば、 &nbsp …

no image

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

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

no image

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

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

no image

unityでマウスの座標を取得する方法(超簡単です)

どうも、大石です。   あなたはunityでマウスの座標を取得したい ですか?   この記事を読めば、あなたはすぐに マウスの座標を取得できますよ。   スポンサードサー …

no image

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

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

最新記事

チャーさん

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

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

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