コンポーネントの値をスクリプトから変更したい。GetComponentを使おう

はじめに何を書くか迷ったので超初心者の時期に詰まったGetComponentについて書かせていただきます。

Unityやプログラミングに関して、ほぼ独学でやっているので間違っている部分があるかもしれません。

早速GetComponentって説明していきます。

何かものに当たった時とかに「何か色を変えたい」とか「当たり判定のサイズを変えたい」とか思いませんか?

そんなときGetComponentの登場です!

では、適当なオブジェジェクトを作りましょう。
今回はCubeを使います。
そして中身を見るとデフォルトでいろんなコンポーネントがついています。
Transform ← TransformはGetComponentがいらないんです
Cube(Mesh Filter)
MeshRenderer
BoxCollider
そして一番下にあるのがMaterialこれはオブジェクトの表示を制御しているものになります。これについては今回詳しくは触れません。

Materialについては一応マニュアルを貼っておきます。
https://docs.unity3d.com/jp/460/Manual/class-Material.html

スクリーンショット 2020-02-29 16.06.34

では色を変えるためにはMeshRendererをイジります!
と言っても色変える場所ないよ?って思うかもしれません。
実はMeshRendererのMaterialsと言うなかにDefault-Materialと書かれたモノがあります。これは一番下にあるのがMaterialがアタッチされているのです。
これで白くなっているわけです。
Materialはオリジナルでも作成できますのでやってみてください。
今回はこのままいきます。

それではスクリプトから色を変更してみましょう。

スクリーンショット 2020-02-29 16.35.01

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

public class GetComponent_note : MonoBehaviour
{

   Renderer renderer; //宣言

   // Start is called before the first frame update
   void Start()
   {
       renderer= GetComponent<Renderer>();//コンポーネントの取得

       renderer.material.color = Color.red; //カラーの変更:赤

       Debug.Log(renderer.material.color); //現在の色をコンソールに表示
   }

   // Update is called once per frame
   void Update()
   {
       
   }
}

これで実行するとCubeが赤色になると思います。

スクリーンショット 2020-02-29 16.41.15

これで色の変更ができました。

イメージとしてはこんな感じです。
変数ごとに色分けしてみました。

スクリーンショット 2020-02-29 16.05

GetComponentを使う時の注意
・オブジェクトに取得したいコンポーネントがない場合コンソールにエラーが出ます。スクリプトにはエラーが出ないので注意。
・Update()で毎回取得すると動作が重くなっちゃう。
できるだけGetComponentの回数を減らしましょう。

以上になります。

Unityのプロではないので間違っている箇所、認識が違ったりするかもしれませんが、記録として残していきたいと思います。

今後ともよろしくお願いいたします。

Unity-マニュアル :Unityについて知りたい!
https://docs.unity3d.com/jp/460/Manual/index.html

Unity-スクリプティングAPI :変数や関数を調べたい!
https://docs.unity3d.com/jp/460/ScriptReference/index.html

この記事が気に入ったらサポートをしてみませんか?