Project Unknown's Blog

Peojct.Unknownと言う名前で細々とアプリ開発をやってるメンバーのブログです。

Unity2d Scriptで生成したGameObjectを子として登録する。

ゆう@あんのうんです。

とあるGameObjectがあり、動的にそのGameObjectに新しいGameObjectを子として登録する方法です。

子としてGameObjectを登録すると、親の座標移動に従って相対的に座標変更できるので、パーティクルとかでGameObjectに一定時間エフェクトを表示する時など便利です。

例では、動的に生成したPrefabを子として登録します。

// プレハブを取得
GameObject prefab = (GameObject)Resources.Load("Prefabs/Effects/Prefab名");

Vector2 pos = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y);
// プレハブからインスタンスを生成
GameObject obj = (GameObject)Instantiate(prefab, transform.position, Quaternion.identity);
// 作成したオブジェクトを子として登録
obj.transform.parent = transform;

上記Sampleの様に、生成したオブジェクトの、transform.parentに親にしたいオブジェクトのtransformを登録する事で、親子関係にすることが出来ます。

上記Sampleでやっている、Prefabの動的生成については、こちらの記事に詳細を載せています。