アマゾンバナーリンク

Unityでスクリプトからオブジェクトを検索やコンポーネントの操作 まとめ

2020年4月21日

Unityではスクリプトからコンポーネントを取得する方法がいくつかあるので、今回はそれをまとめます。

オブジェクト名やタグから検索する

すべてのオブジェクトからオブジェクトの名前で1つだけ取得

GameObject obj = GameObject.Find( "Obj"); // Objという名前がついてるオブジェクトを取得

すべてのオブジェクトからタグ名で1つだけ取得

GameObject obj = GameObject.FindWithTag("Player"); // Playerというタグ名がついてるGameObjectを取得

すべてのオブジェクトからタグ名ですべてのオブジェクトを取得

GameObject[] objs = GameObject.FindGameObjectsWithTag("Player") // Playerというタグ名がついてるすべてのGameObjectを取得
ここまでの注意点

transform.Find()以外は、すべて指定したGameObjectが非アクティブ(チェックが入っていない)だった場合には、取得することができない(nullが返される)ということにも注意が必要です。

子オブジェクトからオブェジェクトの名前で1つだけトランスフォームを取得

Transform trans = transform.Find("Child"); // 子オブジェクトからChildというオブジェクト名のトランスフォームを検索

コンポーネント名からオブジェクトを取得する

自身のオブジェクトからコンポーネントを取得する

RigidBody rigidbody = GetComponent<RigidBody>();

すべての子オブジェクトからコンポーネントを取得する

MyScript ms = GetComponentInChildren<MyScript>(); // 自作のスクリプトを子オブジェクトから取得

すべての親オブジェクトからコンポーネントを取得する

MyScript ms = GetComponentInParent<MyScript>(); // 自作のスクリプトを親オブジェクトから取得

すべてのコンポーネントから最初に見つけたアクティブなオブジェクトを取得

GUITexture texture = (GUITexture)FindObjectOfType(typeof(GUITexture));

すべてのコンポーネントからすべてのアクティブなオブジェクトを取得

TextMesh[] meshs = foundObjects = FindObjectsOfType<TextMesh>();

どれもググればすぐに出てくる情報ですが、さっと使いたい時のためにメモしておきました。

Unity

Posted by ジェイ