2016-07-29 7 views
1

Ich möchte meine OptionButton von MainMenu, um die MainMenuCanvas verstecken, damit ich die OptionCanvas verwenden kann, ist es möglich?Canvas zu Canvas (MainMenu zu Optionen) Gleiche Szene 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);*/ 
    } 
    } 
} 

Antwort

2

Es sollte möglich sein. Obwohl ich Canvas.enabled (https://docs.unity3d.com/ScriptReference/Behaviour-enabled.html) Variable für die Konsistenz empfehlen würde.

Erstellen Sie einfach eine Funktion in einem Skript, um den Klick zu verarbeiten. f.

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

Diese Funktion sollte tun, was Sie wollen. Dann wählen Sie einfach die Schaltfläche aus und wählen diese Funktion im Inspektor als onClick() dieser Schaltfläche.

Lassen Sie mich wissen, wenn das funktioniert, wie ich es nicht atm testen kann!

2

Sie müssen einfach Ihr OptionButton Ereignis zu einer Funktion registrieren. Wenn Sie auf Button klicken, wird die registrierte Funktion aufgerufen. Button.onClick.AddListener wird verwendet, um das Ereignis Button zu registrieren. Button.onClick.RemoveAllListeners wird verwendet, um das Ereignis Button abzumelden.

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(); 
} 

können Sie Schritt zum Einrichten here UI finden.