GetComponentについて調べてみた

GetComponentとは?

「GetComponent」は、Unityにおいて特定のコンポーネントをオブジェクトから取得するためのメソッドだそうです。 このメソッドを使うことで、オブジェクトにアタッチされた特定のコンポーネントインスタンスを取得することができます。

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    private Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>(); // Rigidbody2Dコンポーネントのインスタンスを取得
    }

    void Update()
    {
        // 取得したRigidbody2Dコンポーネントを使用してオブジェクトを移動させる
        rb.velocity = new Vector2(1f, 0f);
    }
}

上記の例では、GetComponent<Rigidbody2D>()を使用して、アタッチされているRigidbody2Dコンポーネントインスタンスを取得しています。Start()メソッド内で取得しているため、スクリプトがアタッチされたオブジェクトの開始時に一度だけ実行されます。

その後のUpdate()メソッド内で、取得したRigidbody2Dコンポーネントを使用してオブジェクトを移動させる処理が行われています。例では、rb.velocityを使用してオブジェクトを右に1秒間に1の速さで移動させるように設定しています。

このように、GetComponentメソッドを使用することで、オブジェクトにアタッチされた特定のコンポーネントインスタンスを取得し、そのコンポーネントに対して操作や設定を行うことができます。

以下にRigidbody2Dコンポーネントを使ったサンプルコードをもう一例示します。

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    private Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>(); // Rigidbody2Dコンポーネントのインスタンスを取得
    }

    void Update()
    {
        // 取得したRigidbody2Dコンポーネントを使用してオブジェクトを回転させる
        rb.rotation += 1f;
    }
}

このサンプルコードでは、Rigidbody2Dを変数の型として使用しています。rbという名前のRigidbody2D型の変数を宣言し、GetComponent<Rigidbody2D>()でアタッチされているRigidbody2Dコンポーネントインスタンスを取得しています。

その後のUpdate()メソッド内では、取得したRigidbody2Dコンポーネントを使用してオブジェクトを回転させる処理が行われています。例では、rb.rotationに1度ずつ加算することで、オブジェクトを回転させる設定になっています。

このように、変数の型としてRigidbody2Dを使用することで、取得したRigidbody2Dコンポーネントに対して操作や設定を行うことができます。

🐧 代表的なGetComponentを使用した例

Rigidbody: 物理エンジンによるオブジェクトの挙動を制御するためのコンポーネントです。

private Rigidbody rb;

Transform: オブジェクトの位置、回転、スケールなどを制御するためのコンポーネントです。

private Transform objTransform;

AudioSource: オーディオの再生や制御を行うためのコンポーネントです。

private AudioSource audioSource;

Animator: アニメーションの再生や制御を行うためのコンポーネントです。

private Animator animator;

Collider: 当たり判定を持たせるためのコンポーネントです。

private Collider collider;

Camera: ゲーム内の視点や表示範囲を制御するためのコンポーネントです。

private Camera mainCamera;

BoxCollider2D: 2Dオブジェクトに矩形の当たり判定を追加するためのコンポーネントです。

private BoxCollider2D boxCollider;

Light: 光源の設定や照明効果を制御するためのコンポーネントです。

private Light lightSource;

UI.Text: UI要素のテキスト表示を制御するためのコンポーネントです。

private TMPro.TextMeshProUGUI uiText;

ParticleSystem: パーティクル効果やエフェクトを制御するためのコンポーネントです。

private ParticleSystem particleSystem;

公式ドキュメント

https://docs.unity3d.com/2022.2/Documentation/ScriptReference/Component.GetComponent.html