トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_script_change_hierarchy_gameobject

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秒