GameObjectの階層位置を変更
シーンに新たに複製して配置したGameObject(スクリプトからの生成は「形状の複製(Prefab)」参照)は、シーン階層ではどこに配置されるかは不明。
明示的に生成したGameObjectのを指定の階層に置きたい場合もあります。
以下のような階層が存在すると仮定。
root object1 object1_1 object1_2
object1_2の下に、object_1_2を複製したobject_1_3を作成してobject1の子として配置する例です。
// object1_2を複製してobject1_3とする. GameObject obj1_2 = GameObject.Find("/root/object1/object1_2") as GameObject; GameObject obj1_3 = GameObject.Instantiate(obj1_2) as GameObject obj1_3.name = "object1_3"; // 階層位置を指定. GameObject object1 = GameObject.Find("/root/object1") as GameObject; obj1_3.transform.parent = object1.transform; obj1_3.transform.localScale = new Vector3(1, 1, 1); // なぜかスケールが不正になる場合があるので(1, 1, 1)を入れて補正.
「対象のGameObject.transform.parent」に対して、親にするGameObjectのtransformを入れます。
この後、なぜかスケール値が大きな値になってしまうことがあったため、transform.localScaleに(1, 1, 1)を入れるようにしてます。
最終更新時間:2014年02月19日 10時17分20秒