トップ 一覧 検索 ヘルプ RSS ログイン

unity_script_change_hierarchy_gameobjectの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!GameObjectの階層位置を変更

シーンに新たに複製して配置したGameObject(スクリプトからの生成は「[[形状の複製(Prefab)|unity_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)を入れるようにしてます。

----
{{lastmodified}}