![見出し画像](https://assets.st-note.com/production/uploads/images/87968412/rectangle_large_type_2_bd294c8b8a826ebd5a73aed09372f712.png?width=800)
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>();
この記事が気に入ったらサポートをしてみませんか?