2015-10-17 33 views
-1

我試圖在某個場景(播放級別)加載後使按鈕可以互動。它是菜單場景中的一個按鈕,用於表示加載的場景本身(播放後可選擇的級別)。無法通過單獨的腳本使按鈕不可互動

問題是這樣的:如果用戶通過一定的水平,說1級,2級被加載,和靜態方法被調用:

public static void AllowTut2() 
{ 
    Tut2Allowed = true; //public static bool initialised in this script 
    tutorial2.interactable = true; //tutorial2 is a button in the "menu scene" 
} 

要清楚其中的變量來自於,這是相同的腳本的一部分:

public class LevelSelectScript : MonoBehaviour { 

public Button tutorial2; 
public static bool Tut2Allowed = false; 
//...some other variables 

    void Start() 
    { 
    tutorial2 = tutorial2.GetComponent<Button>(); 
    tutorial2.enabled = false; //more later on 
    ///... some other code 
    } 
} 

現在的問題是這種錯誤:一個對象引用需要訪問非靜態成員`LevelSelectScript.tutorial2' (指方法AllowTut2)。

似乎我不能通過給定的靜態方法(在另一個腳本中調用)更改tutorial2.interactable。

它基本上說按鈕tutorial2是非靜態的,因此不能在靜態方法中使用它。

現在,如果我使按鈕靜態的,即改變

public Button tutorial2; 

public static Button tutorial2; 

那我也沒有辦法在場景中的按鈕對象分配到所連接的腳本這個變量。

有人可能知道這個問題的解決方案嗎?

在此先感謝!

+0

您應該使用,而不是統一標籤 –

回答

0

,如果你想使用靜態varaibles,還可以使用檢查分配可以使用單,here在這裏你可以瞭解它

+0

但名字「tutorial2」的unity3d標籤已經是代碼中聲明的Object(Button)的實例。 –

+0

改爲使用單例 –