通常我们所用的SetParent是不带第二个参数的。
但是世界坐标系中的物体在与UGUI相结合使用时,往往会出现问题,这个问题基本上都出自于SetParent()的第二个参数。
首先看一个基础列子:
一个空的GameObject的Transform值:
一个Cube的Transform值:
他们的关系:
Game视图:
我们直接在Hierarchy面板中拖动Cube到空物体下,让t他成为空物体的子物体。
然后在Game视图中可以发现,Cube基本没有变化,而Transform值改变。
Cube的transform值:
刚才在面板中的操作相当于在代码中的操作Cube.SetParent(GameObject.transform)。(可以去试试)
所以,通俗一点来讲当SetParent方法只有第一个参数,或者第二个参数为true时,
物体的transform值会根据父物体的transform值做相应的改变,使物体在没有设置父物体前在世界坐标系中的大小旋转位置和设置父物体后在世界坐标系中的位置旋转大小一致。
当我们将cube拖出来,添加脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript1 : MonoBehaviour {
public Transform parentTransform;
void Start () {
transform.SetParent(parentTransform, false);
}
/*private void Start()
{
transform.SetParent(parentTransform, true);
}*/
}
然后在Unity中发现:
Game视图:
Cube的transform值:
所以通俗一点来讲,当第二个参数为false的时候。
物体的transform不会根据当前设置的父物体的transform的值所改变,也就是transform值不变。
这样Cube在设置父物体前后就会有所改变了。