2017-03-06 76 views
2

我無法弄清楚這個問題,我刪除然後重新編輯PlayTab對象,但它不再起作用......它告訴我它沒有被分配,但它是我的知識。 Unity編程相對較新,任何幫助都很棒,下面的腳本。統一變量尚未分配錯誤

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 
using UnityEngine.Audio; 
public class MainMenu : MonoBehaviour { 
    public GameObject Buttons; 
    public GameObject CreditsPanel; 
    public GameObject QuitPanel; 
    public GameObject Options; 
    public GameObject PlayTab; 
    public Slider audiosl; 
    public Slider graphicsl; 
    public Toggle fullscreen; 
    public string SceneName; 

void Start(){ 
    QualitySettings.SetQualityLevel (100); 
    //(int)PlayerPrefs.GetFloat("Quality") 
    AudioListener.volume = 100; 
    //PlayerPrefs.GetFloat("Volume"); 
    int qualityLevel = QualitySettings.GetQualityLevel(); 
    audiosl.value = AudioListener.volume; 
    graphicsl.value = qualityLevel; 
} 
void Update(){ 
    Debug.Log ("Update"); 
    AudioListener.volume = audiosl.value; 
    QualitySettings.SetQualityLevel ((int)graphicsl.value); 
} 
public void InGame(bool a){ 
    if (a == true) { 
     Application.LoadLevel (SceneName); 
    } else { 
     //continue 
    } 
} 
public void Play(bool a){ 
    Debug.Log ("Inside Play Function"); 
    if (a == true) { 
     Debug.Log ("Inside If Statment"); 
     PlayTab.SetActive(a); 
     Buttons.SetActive(!a); 
     Animation pl = PlayTab.GetComponent<Animation>(); 
     pl.Play("EnterPlayMenu"); 
    }else { 
     Debug.Log ("Else'd"); 
     PlayTab.SetActive(a); 
    } 

} 
public void ShowMenu(bool a){ 

} 
public void Option(bool a){ 
    if (a == true) { 
     Options.SetActive(a); 
     Buttons.SetActive(!a); 
     Animation Opt = Options.GetComponent<Animation>(); 
     Opt.Play("OptionEnter"); 



    }if (a == false) { 
     Animation d = Buttons.GetComponent<Animation>(); 

     d.Play ("mainbuttonenter"); 
     Options.SetActive (false); 
    } 
    } 


public void Credits(bool a){ 
    if (a == true) { 
     CreditsPanel.SetActive(a); 
     Buttons.SetActive(!a); 
     Animation cr = CreditsPanel.GetComponent<Animation>(); 
     cr.Play("EnterCredits"); 

    }else { 
     CreditsPanel.SetActive(a); 
    } 

} 
public void Quit(bool a){ 
    if (a == true) { 
     QuitPanel.SetActive(a); 
     Buttons.SetActive(!a); 
     Animation q = QuitPanel.GetComponent<Animation>(); 
     q.Play("EnterQuit"); 
    }else { 
     QuitPanel.SetActive(a); 
    } 

} 
public void Exit(bool a){ 
    if (a == false) { 
     Option(false); 
     Buttons.SetActive(true); 
     CreditsPanel.SetActive(false); 
     QuitPanel.SetActive(false); 
     Options.SetActive(false); 

     PlayTab.SetActive(false); 
     saveSettings(); 

    } 
    if (a == true) { 
     Application.Quit(); 
    } 
} 
public void saveSettings(){ 
    PlayerPrefs.SetFloat ("Quality", QualitySettings.GetQualityLevel()); 
    PlayerPrefs.SetFloat ("Volume", AudioListener.volume); 
} 
public void FullScreen(bool a){ 
    if (Screen.fullScreen == a) { 
     Screen.fullScreen = !a; 
    } else { 
     Screen.fullScreen = a; 
    } 
} 

}

+0

你能在Unity Game Object窗格中顯示對象綁定的截圖嗎?它從來沒有初始化,或者它在某個時候會失去Playtab狀態? –

+0

@SilasReinagel 你是什麼意思在檢查器中的對象綁定? –

+0

很可能您沒有將相關的遊戲對象分配給檢查器中的PlayTab字段。選擇此腳本附加到的對象,並查看PlayTab字段是否包含相關的遊戲對象。如果沒有,請將其從層次結構拖放到PlayTab字段中。 – pumpkinszwan

回答

1

據我看到的,你只定義playTab變量,但沒有分配它。

編輯:

嘗試開始顯示出來,然後自動通過代碼隱藏它。可能Unity不會從一開始就初始化場景中不可見的對象。

+0

但它是一個遊戲對象,它附加到適當的遊戲對象上。我如何分配它?其他的工作原樣... –

+0

哦,對,你的意思是在編輯器。我已經忘記了這種可能性。根據我的經驗,Unity有時很奇怪。你檢查過這個特定的對象是不是隱藏的嗎? –

+0

'隱藏'是什麼意思?對不起,我對Unity非常陌生。 –