通常我們所用的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在設置父物體前后就會有所改變了。