見出し画像

GameObjectの取得方法とGameObjectの子のコンポーネントの取得方法

GameObjectの取得方法には色々あるので、備忘録として記録を残しておきます。また、GameObject内の子のコンポーネントもソース上で取得したい場合があるので、それに関しても記述を残します。


1.GameObjectの取得方法

GameObjectの取得方法は大きく分けて2つあり、ヒエラルキ上から全検索されて処理が重たくなる場合と、指定したオブジェクトを参照されるので、処理が軽い場合です。前者の処理が重たくなる場合はGameObjectでアクセスし、後者はTransformでアクセスします。オススメはTransformでアクセスすることです。transformはインスタンスで返されるのに対し、GameObjectはstaticで返され、後から共有、参照ができるかたちとなります。

1.1 Hierarcy上で表示される名前で取得する

GameObject.Findを利用する

GameObject cube = GameObject.Find("cube");

1.1パスで取得する

GameObject.Findを利用する

GameObject cube = GameObject.Find("/cube");

1.2 タグで取得する(ユニークなタグが設定されている場合)

GameObject.FindGameObjectWithTagを利用する

GameObject player = GameObject.FindGameObjectWithTag("Player");


1.3 タグで取得する(複数同一のタグが設定されている場合)

GameObject.FindGameObjectsWithTagを利用する

GameObject[] blocks = GameObject.FindGameObjectsWithTag ("Cube");

1.4 【オススメ】インスタンスで取得する

transform.Find("xxx").gameObject を利用する
※xxxには探したいGameObject名を入れる

GameObject block = transform.Find("Cube").gameObject;

2.GameObjectの子のコンポーネントの取得方法

任意のオブジェクト変数.transform.GetComponent<取得したい子コンポーネントの型>()を利用する

SpriteRenderer cardImage= cardObject.transform.GetComponent<SpriteRenderer>();

GameObject cardChild= cardObject.transform.GetComponent<GameObject>();

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