1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unity コンポーネントの取得&内部要素変更方法メモ

Last updated at Posted at 2023-08-24

UnityにはGameObjectComponentという要素が存在します

GameObjectは機能を持たない部品の側です、これにComponentを追加することで様々な機能をもつことができます

Componentの例を以下に示します (https://www.f-sp.com/entry/2015/11/20/160005 より引用)

カメラ(Camera) ...
ライト(Light) ...
レンダラ(Renderer) ...
コライダ(Collider) ...
リジッドボディ(Rigidbody) ...
ジョイント(Joint) ...
キャンバス(Canvas) ...
テキスト(Text), イメージ(Image), ボタン(Button), etc.

UnityのスクリプトにはこのようなComponentを取得する関数が存在し、Component自体の制御を行う仕組みが用意されています。

本記事では、このComponentへのアクセスを行うための関数について整理していきたいと思います。

調査したり使う場面が合った場合に随時追記していく

GameObject.GetComponent

公式リファレンス

定義型

public Component GetComponent (Type type);

サンプル

using UnityEngine;

public class GetComponentGenericExample : MonoBehaviour
{
    void Start()
    {
        HingeJoint hinge = gameObject.GetComponent<HingeJoint>();

        if (hinge != null)
            hinge.useSpring = false;
    }
}

サンプル2

(https://yttm-work.jp/unity/unity_0012.html より)
Scriptを取り付けたゲームオブジェクトにMeshRendererコンポーネントがある時にそれを取得するコード
MeshRenderCubeにもデフォルトでついていおり、色を表現してくれます

	// ゲームオブジェクトに格納されているMeshRendererを取得
	MeshRenderer mesh = GetComponent<MeshRenderer>();

	// MeshRendererのメンバであるマテリアルの色を変更
	if (Input.GetKeyDown (KeyCode.Z) == true) {
		mesh.materials[0].color = Color.blue;
	} else if (Input.GetKeyDown (KeyCode.X) == true) {
		mesh.materials[0].color = Color.red;
	}

文字の画面表示

TextMehsPro

GameObject > UI > TextMeshProから文字表示用のゲームオブジェクトをUnityの画面に生成する.

生成後,HierarchyCanvas内にText(TMP)というオブジェクトが生成される.
以下のようにスクリプトを作製し,text_object内に上記Text(TMP)オブジェクトを設置する.
スクリプトはそのオブジェクト内のTextMeshProUGUIコンポーネント取得し,Update関数内でtext要素にhelloという文字列をいれる.そうすると表示される文字列がhelloに変化する.

using TMPro;

public class AAA : MonoBehaviour
{

  public GameObject text_object;
  TextMeshProUGUI text_component;

  
  void Start()
  {

     text_component = text_object.GetComponent<TextMeshProUGUI>();
     
  }
  void Update()
  {

    text_component.text = "hello";
  
  }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?