Unity 当使用 Instantiate() 创建实例时,在参数里定义父级与实例化后再设置父级的区别
设有:
- prefab:预制件, 默认的位置在(10,10,10)。
- parent:在场景中的游戏对象,位置在(20,20,20)。
-
例1. 在参数里定义父级,会将实例直接旋转到父级,此时实例在父级内的局部坐标为(10,10,10),实例的世界坐标为(30,30,30)
var inst = Instantiate(prefab, parent);
-
例2.实例化后再设置父级(保持世界坐标系变换),会先将实例放置在当前激活的场景下,然后保持实例当世界坐标的位置转换父级,此时实例在父级内的局部坐标为(-10,-10,-10),实例的世界坐标为(10,10,10)
var inst = Instantiate(prefab); inst.transform.parent = parent; // 或 // inst.transform.SetParent(transform); // 或 // inst.transform.SetParent(transform, true);
-
例3. 实例化后再设置父级(不保持世界坐标系变换),此时与例1等效
var inst = Instantiate(prefab); inst.transform.SetParent(transform,false);