Unity 3d 隱藏GameObject


本篇簡單介紹Unity3d中隱藏GameObject的三種方式。

隱藏GameObject

Unity3d 版本5.x

Destroy方法

Destroy方法顧名思義是銷毀的意思。使用該方法可以將改GameObject從場景中銷毀,來隱藏物體。


   public GameObject obj;
   
   //銷毀物體
   Destroy(obj);

Renderer的enabled屬性

你可以通過GameObjectRendererenabled屬性的布爾值來控制場景是否渲染該物體。


   public GameObject obj;
   
   //隱藏物體
   obj.GetComponent<Renderer>().enabled = false;
   
   //顯示物體
   obj.GetComponent<Renderer>().enabled = true;


當你設置為false

outPut

SetActive方法

眾所周知每個GameObject都有一個active屬性,你可以通過SetActive方法來選擇是否激活該物體,activeSelf方法可以用來來查看物體的當前局部的激活狀態。


   public GameObject obj;

   //隱藏物體
   obj.SetActive(false);
   
   //顯示物體
   obj.SetActive(false);
   


outPut

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來控制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM