2015-07-12 256 views
1

這裏我使用SetActive(true)來啓用我的gameObject,但它不起作用。我嘗試過使用各種函數和對象,可以在代碼中看到我的gameObj。但沒有任何工作。雖然當我設置setActive(false)時,它可以工作,但這不是setActive(true)的事件。我不知道原因。任何人都可以幫助我嗎?順便說一句,我使用Unity 4.3.4版本。Unity 2D SetActive()不起作用

if (paddle.life == 1) { 
       GameObject life_2 = GameObject.Find ("life2"); 
       GameObject lost = GameObject.Find("lostlife"); 
       life_2.SetActive (false); 
       lost.SetActive(true); 
       //lost.active = true; 
       //lost.renderer.enabled = true;(why null ref) 

       //after some secs disable the message 
       //Destroy(lost, 4); 
      } 
+0

定義 「不工作」 - 什麼是實際發生的? –

+0

嘗試調試您的代碼。使用斷點可能是。它必須是你的代碼邏輯有問題。 –

+0

調用set active只會將localActive標誌設置爲您在該函數中給出的值。如果父遊戲對象被禁用,則不會有任何孩子變爲活動的 –

回答

1

的一部分從unity doc for GameObject.Find

如果找不到任何與名字的遊戲對象,則返回null。如果名稱 包含「/」字符,它將遍歷層次結構,如路徑 名稱。 此功能只返回活動的遊戲對象。

也許你需要在腳本中引用你的gameObject作爲參數。這樣你可以引用gameObject(不管它是否激活),它應該可以工作。

0

你使用:

lost.active = false; 

lost.renderer.enabled = false; 

,但最主要的是這樣的:

lost.enabled = false;