【Unity入門】コンポーネントを自在に操作!GetComponenの使い方!

今回はUnityのComponent(コンポーネント)の話を見ていきたいと思います。

これはUnityで作品を作る上で非常に重要な話となってきます!

なぜならUnityでは、移動も、回転も、描画も、カメラも、自作したプログラムでさえも、何もかもが基本的に「Component」という形をとって動いているからです。

今回はまずComponentとはなんなのかを学びましょう。

続けて次のような、プログラム上での操作方法を学んでいきましょう!

・「GetComponent」でまずは取得!
・「AddComponent」で追加してみよう!
・「destroy」を使えば削除も出来る!

非常に重要な「Component」という機能と、それを操作する関数たち。

ぜひここでマスターしてしまいましょう!

それではよろしくお願いいたします!

Componentとは

まずそもそもコンポーネントとは何なのでしょう?

コンポーネントとは一言で言うと「オブジェクトやゲームでの処理に関する心臓部」だと言われています。

例えばUnity上で「カメラ」や「ライト」など、何か処理を行うオブジェクトの中で実際に処理を行っているのがコンポーネントなのです。

と言っても言葉で言ってもわらからないですよね…

しかしこれはエディタ上で見てみれば一目でわかります!

次のはエディタ上でコンポーネントを見てみましょう。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

エディタ上で見るComponent

エディタ上で見てみれば、オブジェクトが何のコンポーネントを所持しているか一目でわかります。

以下の画像は「Cube」というオブジェクトをクリックし、選択している画面です。

unity-getcomponent-1

選択中のオブジェクトが保持しているコンポーネントが、Inspectorウィンドウに一覧表示されています。

画像の例では、Cubeオブジェクトは「Transform」「Cube(Mesh File)」「Box Collider」「Mesh Renderer」「Default-Material」といったコンポーネントを所持していることがわかりますね!

つまりこの「Cubeオブジェクト」は、座標などを管理するTransform、実際に描画を行うMesh Renderer、当たり判定を行うBox Colliderといった各種コンポーネントが組み込まれて、処理を実行しているおかげで機能しているんです!

それをより実感したい人は、Inspectorウィンドウ上のコンポーネントを右クリックで出てくる「Remove Component」を押してコンポーネントを破棄して回ってみてください。

Cubeオブジェクトが何も機能しない、なんの描画もされない空っぽのオブジェクトになってしまうことがわかると思います。

またコンポーネントを新たに追加したい場合は「AddComponentボタン」を押すか、コンポーネントをオブジェクトへ「ドラッグ&ドロップ」で投げ込みましょう。

これだけで新たに機能が追加が行えるのも理解できると思います。

この辺りの、GameObjectとComponentの関係は、以下の記事でさらに詳しく追求をしています。

ぜひ次に進む前に読んでみてください!

【Unity入門】基礎であり奥義!GameObjectを完全攻略!
更新日:2023年3月21日

Unityでとても重要な部分なので、ぜひ目を通しておくことをお勧めします。

プログラム上でComponentを触ろう!

ここまででエディタ上でコンポーネントの扱い方を見てきました。

次はスクリプト上での、コンポーネントとの付き合い方を見ていきましょう。

「GetComponent」でまずは取得!

スクリプト上でコンポーネントを取得する場合は「GetComponent関数」を利用しましょう。

サンプルは以下の通りです。

今回は「Transform」「BoxCollider」コンポーネントを取得しています。

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

public class TestScript : MonoBehaviour {

    void Start () {
        // Transformコンポーネントを取得
        Transform t = this.gameObject.GetComponent<Transform>();

        // Transformコンポーネントを取得
        BoxCollider b = this.gameObject.GetComponent<BoxCollider>();
    }
}

取得さえできれば、あとはこちらのものです。

例えば「Transformコンポーネント」の中身を書き換えることで座標移動を行ったり。

「BoxColliderコンポーネント」の中身を編集し当たり判定の領域を変更したりすることも可能です。

またgetcomponentを使った後、初心者のやりたくなることの一つが移動回転だと思います。

以下の記事でその辺りのの説明を行っていますので、オブジェクトを自在に操作したい人はぜひお読みください。

【Unity】transformを使いこなす!座標・回転など自在に操作しよう!
更新日:2023年3月21日

「AddComponent」で追加してみよう!

次にコンポーネントの追加を行ってみましょう。

これを覚えれば、例えば「特定条件下でのみオブジェクトにコンポーネントを追加!」なんてこともできるようになります。

これを実現するためには「AddComponent関数」を使います。

サンプルは以下の通りです。

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

public class TestScript : MonoBehaviour {

    void Start () {
        // Rigidbodyコンポーネントを追加
        this.gameObject.AddComponent<Rigidbody> ();
    }
}

今回はRigidbodyコンポーネントをオブジェクトへ追加しています。

追加した瞬間、物理演算の挙動が開始されます。

ちなみにRigidbodyを利用した物理演算について知りたい方は、以下の記事をご覧ください。

【Unity】1番簡単なrigidbodyの使い方!物理演算にデビューしよう!
更新日:2023年3月21日

「destroy」を使えば削除も出来る!

最後に削除を行ってみましょう!

削除は非常にシンプルです。

「GetComponent関数」として取得したコンポーネントを、Destroy関数で削除するだけです。

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

public class TestScript : MonoBehaviour {

    void Start () {
        BoxCollider b = this.gameObject.GetComponent<BoxCollider> ();
        Destroy (b);
    }
}

これでオブジェクトからBoxColliderコンポーネントが削除され、当たり判定がなくなりました。

またDestroy関数もこちらの記事でまとめていますので、詳しくない人は目をとしておきましょう!

オブジェクトやコンポーネントを破棄できる重要な関数です!

実は第二引数で時限式の破棄処理も簡単に行えるんです。

【Unity入門】Destroyを完全攻略!初心者必見の便利テクも一覧まとめ
更新日:2023年3月21日

【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

まとめ

今日はコンポーネントについて見てきました。

コンポーネントは、Unityの処理全般の心臓部です。

GameObjectへ自在に付け替えを行えるようになることで、Unity上で出来ることが大幅に上がります!

ぜひ上手に使いこなしましょう。

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

Writer

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close