チャムコード

チャーさんのUnityゲームラボです。Unityでゲーム制作する時に使うコードやノウハウをメインに発信しています。Unityでゲーム制作したいと思っているなら読んでください。

Unity初心者用基礎知識

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

投稿日:2020年3月17日 更新日:

うも、チャーさんです。

あなたは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初心者用基礎知識

関連記事

no image

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

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

no image

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

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

no image

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

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

no image

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

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

no image

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

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

no image

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

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

最新記事

チャーさん

Unityに関する記事を書いてます。

 

[簡単な経歴]

 

2018年-プログラムを始めUnityの存在を知りハマる。

2019年-エンジニアとして仕事開始(web系)

2021年-UnityでVR開発等にも手を出し始める。

現在-エンジニアとして活動しながらUnityも続行中。

 

youtubeでは、Unityに関する動画をあげてるので、

あなたのUnityスキルアップにどうぞ。