公開日:2023/05/25  更新日:2023/05/25

UnityのGetComponentのスクリプトでの使い方

 UnityのGetComponentとはゲームオブジェクトのコンポーネントを取得できる関数だ。
 この記事を読む前に、C#でのスクリプトの開き方、基本的な構文の作り方、変数、演算子がわからない場合は先に以下の記事で確認してほしい。
UnityのC#の書き方
UnityのC#の変数・演算子
if文の条件分岐

 また、Unityの基礎知識や操作などがわからない場合は先に以下の記事を確認してほしい。
Unityの基礎まとめ

 GetComponentは使用する機会が多いのでぜひマスターしておきたい。使い方を紹介していく。

GetComponentの使い方目次

GetComponentの基本の使い方
GetComponentでスクリプトを取得
目次にもどる

GetComponentの基本の使い方

 GetComponent<コンポーネント名>()の形で記述することでゲームオブジェクトのコンポーネントを取得することができる。
 以下のようにスクリプトのUpdateメソッドに記述し、ゲームオブジェクトのcubeを作成しアタッチして再生してみよう。
 最初の一文は以下の通り。
 cubeのコンポーネントとして最初から存在するMeshRendererを取得しaに代入している。
 続いてif (Input.GetKey(KeyCode.W))と条件分岐しており、Wキーを押し続けている間は中身の処理が行われる。
 中身の処理はa.materials[0].color = Color.red;となっており、aを赤色にしている。
 ifに当てはまらなかったelseの中の処理はa.materials[0].color = Color.green;となっており緑色にしている。
 よって再生するとWキーを押していないとcubeが緑色となる。Wキーを押し続けると赤色に変化する。
目次にもどる

GetComponentでスクリプトを取得

 ゲームオブジェクトにアタッチしたスクリプトもコンポーネントの1種である。よってGetComponentで取得することが可能だ。
 CubeとSphereを作成しよう。

 そして以下のようにスクリプトを2つ記述して欲しい。そしてアタッチしよう。

 処理を実行するスクリプト(Sphereにアタッチ。スクリプト名はget2)

 GetComponentで呼び出しを行うスクリプト(Cubeにアタッチ。スクリプト名はget3)

 処理を実行するスクリプト(Sphereにアタッチ。スクリプト名はget2)から見ていこう。最初に紹介したWキーを押し続けることでゲームオブジェクトが赤色になる処理を行うスクリプトとほとんど同じ。
 異なるのはnamespace tとして、クラス全体を囲んでいる点。
 namespaceは名前空間を作ることができる
 namespace tと書くことでtという名前空間を作ることができる。
 名前空間はusingで使うことができる。
 新しいスクリプトを作成して開いた際にも以下のような記述が最初から入っている。
 最初の2文はC#のSystemの名前空間を使うというもの、その後のusing UnityEngine;はUnityのエンジンを使うというものだ。
 tもこれらと同じような存在になったので、usingで使うことが可能となった。

 色が変わる処理についてはpublic void irokawaru()として、irokawaruのメソッドを新たに作り、その中に入れている。

 続いてGetComponentで呼び出しを行うスクリプト(Cubeにアタッチ。スクリプト名はget3)を見ていこう。最初は以下のようになっている。
 using t;と記述を加えることで名前空間tの機能を使えるようになった。

 次にpublic GameObject targetObject;と記述している。
 publicにしておりシリアル化(シリアライズ)している。cubeにアタッチしたスクリプトのインスペクターにtargetObjectの欄が追加されている。

 ここは処理を行うスクリプトがアタッチされているSphereを選んでおこう。

 Updateメソッドに以下のように記述している。  targetObjectに指定したSphereのコンポーネントのget2(スクリプト名でありコンポーネント)をbに代入している。
 続いてb.irokawaru();と記述しget2のスクリプトのirokawaruのメソッドを実行している。
 Updateメソッドで何度もirokawaruの処理を行っている。SphereがWキーを押していない時は緑色、押し続けている間は赤色となる。
UnityのC#の基礎まとめへ戻る

page top