2016-07-29 61 views
1

我想我的OptionButtonMainMenu到隱藏MainMenuCanvas所以我可以使用OptionCanvas,這可能嗎?帆布到畫布(MainMenu到選項)相同的場景Unity

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 

public class Director : MonoBehaviour { 
    private GameObject mainMenu, options; 

    void Awake(){ 
     mainMenu = GameObject.Find ("MainMenuCanvas"); 
     options = GameObject.Find ("OptionCanvas"); 
     } 
    void Start() { 
     mainMenu.SetActive (true); 
     options.SetActive (false); 
    } 
    void Update() { 
     //should i put If.else here? 
    /* like 
     if (button.clicked){ 
      mainMenu.SetActive (false); 
      options.SetActive (true);*/ 
    } 
    } 
} 

回答

2

應該是可以的。儘管我建議使用Canvas.enabled(https://docs.unity3d.com/ScriptReference/Behaviour-enabled.html)變量來保持一致性。

只需在腳本中創建一個函數來處理點擊。 F.E.

void onOptionsClick(){ 
if(mainMenuCanvas.enabled){ 
    mainMenuCanvas = false; 
    optionCanvas = true; 
} 
else{ 
    mainMenuCanvas = true; 
    optionCanvas = false; 
} 
} 

此功能應該做你想做的。然後,您只需選擇該按鈕並選擇該功能作爲檢查器中該按鈕的onClick()。

讓我知道,如果這樣的作品,我無法測試它atm!

2

您只需將您的OptionButton事件註冊到函數。當點擊Button時,將會調用註冊的功能。 Button.onClick.AddListener用於註冊Button事件。 Button.onClick.RemoveAllListeners用於取消註冊Button事件。

private GameObject mainMenu, options; 
public Button OptionButton; 

void Awake() 
{ 
    mainMenu = GameObject.Find("MainMenuCanvas"); 
    options = GameObject.Find("OptionCanvas"); 
} 

void Start() 
{ 
    mainMenu.SetActive(true); 
    options.SetActive(false); 
} 

void OnEnable() 
{ 
    //Register Button Event 
    OptionButton.onClick.AddListener(() => OptionButtonCallBack()); 

} 

//Will be called when OptionButton is clicked 
private void OptionButtonCallBack() 
{ 
    mainMenu.SetActive(false); 
    options.SetActive(true); 
} 

void OnDisable() 
{ 
    //Un-Register Button Event 
    OptionButton.onClick.RemoveAllListeners(); 
} 

您可以設置您的UI here完成步驟。