我希望OptionButton
的{{1}}隐藏MainMenu
,以便我可以使用MainMenuCanvas
,这可能吗?
OptionCanvas
答案 0 :(得分: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!
答案 1 :(得分: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();
}
您可以找到设置用户界面here的完整步骤。