2017-04-05 137 views
2

Heirarchy structureUnity SetActive(true)最初將其設置爲false後無法工作?

using UnityEngine; 
    using System.Collections; 

    public class Ball : MonoBehaviour { 
     private Rigidbody rigidbody; 
     public Vector3 LaunchVelocity; 
     private AudioSource audiosource; 

     // Use this for initialization 
     void Start() 
     { 
      GameObject.Find("Touch Panel").SetActive(false); 
      rigidbody = GetComponent<Rigidbody>(); 
      rigidbody.isKinematic = true; 
      // disable touch control 
      audiosource = GetComponent<AudioSource>(); 
     } 



     // Update is called once per frame 
     void Update() 
     { 
     } 

     public void LaunchBall(Vector3 passedvelocity) 
     { 
      rigidbody.velocity = passedvelocity; 
     } 

     public void DropBall() // This is attached to a button 
     { 
      rigidbody.isKinematic = false; 
      GameObject.Find("Touch Panel").SetActive(true); 

     } 
    } 

正如你可以在上面看到我有禁止「觸摸屏」啓動時的功能。但在DropBall函數(記住它附加到一個按鈕),我已經將它設置爲活動,但它不工作。任何人都可以幫助我這個。謝謝。

編輯: - 此腳本附加在「球」上。並且球附着在按鈕上。 「觸摸屏」是Canvas的子項。

+0

這個腳本是在什麼對象上? – CNuts

+0

這個腳本附在球上,球附在按鈕上 –

+0

好的,「觸摸屏」如何是它的父母。也許顯示一個你的圖像等級將提供更多的信息。 – CNuts

回答

3

您的問題是,當您禁用您的Touch Panel時,GameObject.Find將無法​​找到它,因此您將無法再次啓用它。

From the documentation:

此功能只返回活躍GameObjects。

你需要設置你的Touch Panelpublic GameObject myPanel,並在檢查分配它,那麼你可以啓用和禁用它。

myPanel.SetActive(false); 
myPanel.SetActive(true); 
+0

那麼我該怎麼做。創建一個公共的遊戲對象並將其附加到那裏 –

+0

@SamratLuitel正是這樣,你應該這樣做。 – CNuts

+0

非常感謝你。最後我解決它。我感到自己真的很愚蠢 –

相關問題