本篇簡單介紹Unity3d中隱藏GameObject的三種方式。
隱藏GameObject
Unity3d 版本5.x
Destroy方法
Destroy方法顧名思義是銷毀的意思。使用該方法可以將改GameObject從場景中銷毀,來隱藏物體。
public GameObject obj;
//銷毀物體
Destroy(obj);
Renderer的enabled屬性
你可以通過GameObject的Renderer的enabled屬性的布爾值來控制場景是否渲染該物體。
public GameObject obj;
//隱藏物體
obj.GetComponent<Renderer>().enabled = false;
//顯示物體
obj.GetComponent<Renderer>().enabled = true;
當你設置為false

SetActive方法
眾所周知每個GameObject都有一個active屬性,你可以通過SetActive方法來選擇是否激活該物體,activeSelf方法可以用來來查看物體的當前局部的激活狀態。
public GameObject obj;
//隱藏物體
obj.SetActive(false);
//顯示物體
obj.SetActive(false);

Tips
你的父物體通過SetActive設置為不激活的狀態的時候,並不影響子物體的激活狀態。但是子物體也不會顯示因為被父物體覆蓋。
所以SetActive只會影響到自身的激活狀態。
隱藏子物體
1.通過Active隱藏子物體在Unity3d 版本4.0之前是可以使用SetActiveRecursively方法的。
如果你現在Unity3d 版本5.x控制整個物體子物體的激活狀態,則需要進行一次遍歷遍歷父物體的所有子節點。
private void SetChildrenActive (GameObject obj, bool active) {
for(int i=0; i < obj.transform.childCount; i++) {
GameObject childObj = obj.transform.GetChild(i).gameObject;
childObj.SetActive (active);
}
}
2.同樣的你也可以使用同樣的過程使用Renderer.enabled來控制。
