【Unity/C#】GetComponent(機能を探し出す)の基本と仕組み

Unityコード専用検索

コードの型

「自分自身(または他のオブジェクト)にくっついている、特定のコンポーネント」を取得します。

C#

// 「自分自身にくっついているRigidbody2D」を探して、変数 rb に入れる
rb = GetComponent<Rigidbody2D>();

// 「自分自身にくっついているTextMeshProUGUI」を探して、変数 text に入れる
scoreText = GetComponent<TextMeshProUGUI>();

コードの仕組み

Unityのオブジェクトは、「箱(GameObject)」の中に「機能(コンポーネント)」を詰め込んで構成されています。 * コンポーネントの山: 1つのオブジェクトには、TransformSpriteRendererRigidbody2D など、たくさんの機能が重なり合ってくっついています。

  • 特定の機能へのアクセス: プログラムから「このオブジェクトのRigidbody2Dをいじりたい!」と思っても、そのままではどれがRigidbody2Dかわかりません。そこで GetComponent を使うと、Unityが「ああ、この箱の中のこれのことだね」と、目的のパーツをピンポイントで引っ張り出してくれます。

活用例

プログラムの起動時(Start)に、「このオブジェクトの機能」をセットアップする時が最も多いです。

C#

private Rigidbody2D rb;

void Start()
{
    // このスクリプトがくっついている箱の中から、Rigidbody2Dという名前の機能を探す
    rb = GetComponent<Rigidbody2D>();
}

その他(重要ポイント)

  • <T> の意味: GetComponent<Rigidbody2D>()< > の部分は、「ジェネリクス」と呼ばれます。「どの種類のパーツが欲しいか?」を指定する枠だと思ってください。
  • 「探せなかったら?」: もしそのオブジェクトに Rigidbody2D が付いていないのに GetComponent を使うと、エラー(null参照)が出ます。必ずパーツが付いているか確認してから使いましょう。
  • 自分以外も探せる: 別のオブジェクトを操作したい場合も使えます。C#// playerというオブジェクトにくっついているRigidbody2Dを探す Rigidbody2D playerRb = player.GetComponent<Rigidbody2D>();

まとめ:GetComponent は「道具箱から道具を取り出す」命令

GetComponent を使う流れは、まさに「道具箱(GameObject)から特定の工具(コンポーネント)を取り出す」作業と同じです。

  1. 道具箱を特定する(自分自身なら省略可能)。
  2. GetComponent<欲しい工具の名前>() を叫ぶ
  3. 取り出した工具を変数(rbなど)に入れて、いつでも使えるようにする

「プログラムで物理を操作したい」「プログラムで文字を変えたい」と思ったら、まずはこの GetComponent でそのパーツを自分の手元に呼び出す、というのがUnity開発の基本中の基本ルールです。

コメント

タイトルとURLをコピーしました