オブジェクトの親子関係は,スクリプト上で動的に指定できます。
本稿では「オブジェクトが既に存在する場合」や「新たに生成する場合」など,複数のパターンについて解説いたします。
(Unity 2018.3.0f2)
今回,使用するメソッドはこちら。
表題のような方法を知りたい場合は,下記の目次から飛ぶ事も出来ます。
親も子も既に存在する場合
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { [SerializeField, Tooltip("親")] Transform parent = null; [SerializeField, Tooltip("子")] Transform child = null; void Start() { // parent を child の親に設定 child.SetParent(parent); } }
上記のようなスクリプトファイルを,適当な GameObject にアタッチします。
UnityEditor 上でParent
オブジェクトとChild
オブジェクトを,親子関係にせず生成しましょう。
Inspector ウインドウでParent
とChild
もアタッチして,Play します。
親は存在するが子は動的に生成する場合
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { [SerializeField, Tooltip("親")] Transform parent = null; void Start() { // child の生成 var child = new GameObject("Child").transform; // parent を child の親に設定 child.SetParent(parent); } }
上記のようなスクリプトファイルを,適当な GameObject にアタッチします。
UnityEditor 上で,Parent
オブジェクトを生成しましょう。
Inspector ウインドウでParent
をアタッチして,Play します。
子は存在するが親は動的に生成する場合
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { [SerializeField, Tooltip("子")] Transform child = null; void Start() { // parent の生成 var parent = new GameObject("Parent").transform; // parent を child の親に設定 child.SetParent(parent); } }
上記のようなスクリプトファイルを,適当な GameObject にアタッチします。
UnityEditor 上で,Child
オブジェクトを生成しましょう。
Inspector ウインドウでChild
をアタッチして,Play します。
子も親も動的に生成する場合
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { void Start() { // parent の生成 var parent = new GameObject("Parent").transform; // child の生成 var child = new GameObject("Child").transform; // parent を child の親に設定 child.SetParent(parent); } }
上記のようなスクリプトファイルを,適当な GameObject にアタッチします。
そのまま Play します。
以上,親子関係を動的に指定する方法でした。