Unityでコンポーネントと取得する方法を分かりやすく解説

Creating Game

こんにちは。あっきーです。
早稲田大学を退学して4年間アメリカ留学に行く予定のもので、ゲーム制作をしています。

unity初心者
unityでスクリプト内でコンポーネントを取得したいんだけど、どうすればいいのか分からないなぁ

ということで、今回はunityにおいて、スクリプト内でコンポーネントを取得する方法を教えます。

Unityではコンポーネントを操作してオブジェクトを動かしたりするのが多くあるので、しっかりマスターしておきましょう。

Unityでコンポーネントを取得するには”GetComponent”

さっそく結論ですが、コンポーネントを取得する方法は、GetComponentです。
例を見てみましょう。


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

public class Sample : MonoBehaviour
{
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent();    
    }

    void FixedUpdate()
    {
        rb.velocity = new Vector3(1.0f, 0f, 0f);
    }
}

これは、「Rigidbodyコンポーネントを取得して、その中のvelocityの値を変え、x速度を1にする」というプログラムです。

実際に動かしてみると…


こんな感じで、操作ができています。

GetConponentの使い方

GetComponentを使ってコンポーネントの取得ができますが、この使い方は以下の通りです。

このようにすることで、コンポーネントの取得が可能になります。
今回の場合は”Rigidbody”というコンポーネントを取得して、そのコンポーネントをrbという変数に入れています。

もちろん、自分で作ったスクリプトもコンポーネントなので取得可能です。

補足コンポーネントの型について


 private Rigidbody rb;

最初にこのように変数を宣言していますが、unityではコンポーネントの型があります。
整数のint型や少数のfloat型のようなものです。

型の決め方は、コンポーネントと同じ名前でOKです。

GetComponentはなるべく1回だけにとどめる

このGetComponentですが、なるべく最初の一回だけ行うようにしましょう。
例えば、GetComponentをUpdateの中に書いてしまうと、毎フレームごとにコンポーネント取得がなされます。
しかし、何度もコンポーネントを取得したところで意味はありませんし、その分だけPCに負荷がかかります(当然遅くなる)。

なので、Startのような最初の一回だけ行うメソッドでコンポーネント取得を行う行うようにしましょう。

コンポーネント内の情報を取得する方法

コンポーネントを取得はできるようになりましが、実は大事なのは次です。
コンポーネント内の情報を取得することです。

今回のように、”velocity(速度)”という情報を取得して書き換えることです。

コンポーネントを取得したところであまり意味はなく、重要なのはその中身の情報を取り出して操作することです。
その方法を見ていきます。

先ほどのコードを確認しましょう。


rb.velocity = new Vector3(1.0f, 0f, 0f);

コンポーネント内の情報を取得する方法はこの通りです。

.(ドット)でつないでいけば情報を取得ができます。簡単ですね。

publicな変数のみ取得可能

注意ですが、このようにコンポーネント内の情報を取得できるのはpublicになっている変数のみです。
つまり、インスペクター上で見える変数のみ取得&変更が可能ということです。

このように、velocityはインスペクター上で見えるので取得可能ということですね。

この変数の公開設定(privateやpublic)については「UnityのC#で使う変数と宣言方法【共有の仕方も教えます】」で説明しているので、参考にどうぞ。

まとめ

いかがでしたか。
GetComponentはこの先ずっとお世話になるので、しっかりマスターしておきましょう。

それでは、また。

  • コンポーネント取得にはGetComponentを利用
  • 変数にコンポーネントを入れるときは”コンポーネント名”で型を宣言する
  • コンポーネント取得は初めの1回で済ます(Startなどで利用)
  • コンポーネント内の情報(変数)は、.(ドット)でつなぐことで取得できる
  • コンポーネント内の情報(変数)は、publicなものだけ取得可能

スポンサードサーチ

オススメ英語学習用SNS "Our Dictionary"

人気記事英語学習用SNSをLaravelで作ってみた【システム解説あり】