Unityでゲームオブジェクトやコンポーネントを探す方法色々

この記事は最終更新日から9年以上経過しています。

ゲームオブジェクトを探す方法がたくさんあってどれにしようか迷う事が多いのでメモ。

自身のGameObjectを参照

コピーしました
GameObject obj = this.gameObject;

transformからGameObjectを参照

コピーしました
GameObject obj = transform.gameObject;

親を参照

コピーしました
GameObject obj = transform.parent.gameObject;

子の参照(for)

for文 + GetChild で取得する場合。

コピーしました
for(int i = 0; i < transform.childCount; i++){
	GameObject obj = transform.GetChild (i).gameObject;
}

子の参照(foreach)

foreach文 で取得する場合。

コピーしました
foreach(Transform t in transform){
	GameObject obj = t.gameObject;
}

Findで探す

Hierarchy上に配置されているオブジェクトをFindで探す。

コピーしました
GameObject obj = GameObject.Find("Environments") as GameObject;

パスを書けば階層も辿れる。

コピーしました
GameObject obj = GameObject.Find("Environments/Directional Light") as GameObject;

FindWithTagで探す

InspectorでTagをつけるのを忘れない事。最後にTagをつけたオブジェクトが参照できる。

コピーしました
GameObject obj = GameObject.FindWithTag("Actor") as GameObject;

FindGameObjectsWithTagで探す

複数ある場合はこっち。配列の中身はInspectorでTagをつけた順になってる。

コピーしました
GameObject[] objs = GameObject.FindGameObjectsWithTag("Actor");
foreach(GameObject obj in objs)
{
	print ("FindGameObjectsWithTag: " + obj);
}

FindObjectOfTypeで探す

コピーしました
Dammy dammy = FindObjectOfType(typeof(Dammy)) as Dammy;

FindObjectsOfTypeで探す

複数ある場合はこっち。

コピーしました
Dammy dammy = FindObjectOfType(typeof(Dammy)) as Dammy;

GetComponentで参照

コピーしました
Dammy dammy = gameObject.GetComponent<Dammy> () as Dammy;

GetComponentInChildrenで参照

コピーしました
Dammy dammy = gameObject.GetComponent<Dammy> () as Dammy;
Profile

石原 悠 / Yu Ishihara

デザインとプログラミングと編み物とヨーグルトが好きです。