2015-02-06 96 views
0

我是Unity和C#的新手,請耐心等待。我有幾個場景,玩家可以隨意移動,其中一個是鼠標點擊時隱藏的圖像對象。現在我已經將腳本添加到了一個imageobject,我使用renderer.enabled = false;來隱藏它。當玩家回到那個場景時,它不會被隱藏起來。什麼是正確的方式來做到這一點?更改場景後,隱藏的對象不再隱藏

// ------編輯的零件----------- 現在工程:)

public static bool showIt = true; 
    void Start() { 
     renderer.enabled = showIt; 
     print (showIt); 
    } 
    void OnMouseDown(){ 
     showIt = false; 
     renderer.enabled = showIt; 
    } 

回答

0

爲什麼不使用靜態變量來保持對象的狀態?您可以使用PlayerPrefs,但它不是最佳方法。設置您的布爾變量以使用靜態初始化記錄狀態,然後使用Start()方法初始化變量並設置值。記住在你的LoadLevel()之前,你必須把值保存到給定的變量中(或者如果你去那個路由,PlayerPrefs.Set *)。請記住,如果您堅持使用Update()或OnGUI()或FixedUpdate(),則會產生大量費用。

+0

感謝百萬:D以上是我的代碼,它似乎在工作。我是否需要添加我想要隱藏的每個對象都是自己的腳本還是都可以從相同的處理? – wantsToLearnAndroid 2015-02-07 09:09:05

0

爲什麼不gameObject.SetActive,而不是渲染(假)。 enabled = false?

+0

它也是這樣,當場景重新輸入時對象仍然出現。 – wantsToLearnAndroid 2015-02-06 18:48:49

0

你可以嘗試這樣使用PlayerPrefs:

public class RenderController : MonoBehaviour { 

     // Check PlayerPrefs in Awake() to see if renderer should be enabled 
     void Awake(){ 
      if (PlayerPrefs.GetInt ("rendererOn") == 0) { 
       renderer.enabled = true; 
      } 
      else 
       renderer.enabled = false; 
     } 

     void OnMouseDown(){ 

      // If the renderer is enabled when clicked then disable renderer 
      if (renderer.enabled == true) { 
       renderer.enabled = false; 
       PlayerPrefs.SetInt("rendererOn",1);// Set state to 1(false)in PlayerPrefs 
      } 

      // If the renderer is disabled when clicked then enable it 
      else if(renderer.enabled == false){ 
       renderer.enabled = true; 
       PlayerPrefs.SetInt("rendererOn",0);// Set state to 0(true)in PlayerPrefs 
      } 
     } 
    } 

我測試了它的團結和它的作品。基本上只是將渲染器組件的啓用/禁用狀態寫入PlayerPrefs,並且每次對象加載時都會檢查最後狀態是什麼。如上所述,請記住將rendererOn全局變量設置爲0,如果您希望在首次加載遊戲時啓用它。

+0

我也考慮過使用playerPrefs,但AmitApollo的答案更簡單,所以我會繼續這樣做,但我也會考慮你的例子,我想我仍然需要它:) – wantsToLearnAndroid 2015-02-07 09:10:42