スライドショー

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

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

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

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

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

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

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

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

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

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

Componentとは

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

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

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

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

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

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

エディタ上で見る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を完全攻略!
更新日 : 2018年9月11日

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を使いこなす!座標・回転など自在に操作しよう!
更新日 : 2018年12月18日

「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の使い方!物理演算にデビューしよう!
更新日 : 2018年12月18日

「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を完全攻略!初心者必見の便利テクも一覧まとめ
更新日 : 2018年5月22日

まとめ

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

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

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

sato

sato

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説