使用按钮单击暂停菜单

时间:2015-06-06 04:05:54

标签: c# unity3d unity3d-gui

我想知道当我点击它时如何使用鼠标指针从同一个按钮暂停和取消暂停菜单。

让我说我有这个。 C#

void Update () {
    if (Button_Pause.OnPointerClick()) {
        if(!active){
            PauseGame();
        }
        else{
            ResumeGame();
        }
        active = !active;
    }
}

public void PauseGame()
{
    Button_Pause = Button_Pause.GetComponent<Button> ();
    Canvas_PauseMenu.enabled = true;
    Button_Exit.enabled = true;
    Button_Pause.enabled = true;
}

public void ResumeGame()
{
    Canvas_PauseMenu.enabled = false;
    Button_Exit.enabled = false;
    Button_Pause.enabled = false;
}

在第一行,我调用OnPointerClick我只是在猜测,因为我不知道该怎么做。我搜索过的内容,使用click来显示它有TimeScale之类的内容。

¿任何人都可以帮助moi吗?请。

2 个答案:

答案 0 :(得分:0)

为您的按钮添加一个监听器,并在暂停脚本中将时间刻度设置为零以暂停游戏

[SerializeField] private Button MyButton = null; // assign in the editor

void Start() { MyButton.onClick.AddListener(() => { pause();});
}

void pause(){
        if (Time.timeScale == 1)
         {
             Time.timeScale = 0;
         }
         else
         {
             Time.timeScale = 1;
         }

 }

答案 1 :(得分:0)

我设法解决了这个问题。它可能没有效率,但它可以满足我的需要。

我在同一个地方创建了2个按钮。这些按钮用不同的精灵表示(Pause&amp; Play)。从开始就可以看到“暂停”。当我点击它时,菜单弹出,“暂停”停止激活,“播放”精灵按钮激活并弹出。当我点击它时,我取消暂停并返回到屏幕中可见的“暂停”精灵。

void Start () {
    Canvas_PauseMenu = Canvas_PauseMenu.GetComponent<Canvas> ();
    Button_Pause = Button_Pause.GetComponent<Button> ();
    Button_Resume = Button_Resume.GetComponent<Button> ();
    Canvas_PauseMenu.enabled = false;
    Button_Resume.enabled = false;
    Button_Resume.gameObject.SetActive (false);
}

// Update is called once per frame
public void PauseTest () {

    if(!active){
        PauseGame();
    }
    else{
        ResumeGame();
    }

}

public void BackToMainMenu()
{
    Application.LoadLevel (0);
}

public void PauseGame()
{
    Canvas_PauseMenu.enabled = true;
    Button_Exit.enabled = true;
    Button_Pause.enabled = false;
    Button_Pause.gameObject.SetActive (false);
    Button_Resume.enabled = true;
    Button_Resume.gameObject.SetActive (true);
    active = true;
    Time.timeScale = 0;
}

public void ResumeGame()
{
    Canvas_PauseMenu.enabled = false;
    Button_Exit.enabled = false;
    Button_Pause.enabled = true;
    Button_Pause.gameObject.SetActive (true);
    Button_Resume.enabled = false;
    Button_Resume.gameObject.SetActive (false);
    active = false;
    Time.timeScale = 1;
}