当我运行一个脚本,这是附加到我的画布弹出暂停菜单,它只运行一次

本文关键字:运行 暂停 布弹出 菜单 我的 一次 一个 脚本 | 更新日期: 2023-09-27 18:17:35

我在画布上附加了一个名为PauseMenu的脚本,它运行一次,最初暂停并恢复,但在单击escape时再也不会暂停。下面是我的代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
#if UNITY_EDITOR
using UnityEditor;
#endif
using RTS;
public class PauseMenu : MonoBehaviour {
Canvas canvas;
private Player player;
public Button Button2;

void Start()
{
    Debug.Log ("asdf");
    player = transform.root.GetComponent< Player >();
    canvas = GetComponent<Canvas>();
    canvas.enabled = false;
    ResourceManager.MenuOpen = false;
    Button2.GetComponent<Button>().onClick.AddListener(() => { Resume();});
}
void Update()
{
    Debug.Log ("Jake");
    if(Input.GetKeyDown(KeyCode.Escape) && ResourceManager.MenuOpen == false) Pause();
    //Button2.GetComponent<Button>().onClick.AddListener(() => { Resume();});
    //if(Input.GetKeyDown(KeyCode.Escape)) Pause();
    //if(Input.GetKeyDown(KeyCode.Escape) && ResourceManager.MenuOpen == true) Resume();
}
public void Pause()
{
    //if(Event.current.type == KeyCode.Escape)Debug.Log ("as12d12f2");
    //if(Event.current.type == EventType.KeyDown)Debug.Log ("as12d12f2");
    Debug.Log ("asdf2");
    canvas.enabled = true;
    Time.timeScale = 0.0f;
    if(player) player.GetComponent< UserInput >().enabled = false;
    //canvas.enabled = !canvas.enabled;
    //Time.timeScale = Time.timeScale == 0 ? 1 : 0;
    //ResourceManager.MenuOpen = true;
}
public void ResumePublic(){
    Resume ();
    }
private void Resume() {
    Debug.Log ("asdf1");
    Time.timeScale = 1.0f;
    GetComponent< PauseMenu >().enabled = false;
    if(player) player.GetComponent< UserInput >().enabled = true;
    Cursor.visible = false;
    canvas.enabled = false;
    //Screen.showCursor = false;
    //GetComponent<UserInput > ().enabled = true;
    Debug.Log ("a2323sdf1");
    ResourceManager.MenuOpen = false;
    Button2.GetComponent<Button>().onClick.AddListener(() => { Resume();});
}
public void Quit()
{
    #if UNITY_EDITOR 
    EditorApplication.isPlaying = false;
    #else 
    Application.Quit();
    #endif
}
}

正在发生的事情是,这是附加到父对象画布,有子对象面板,其中有子对象button1,2和3。当用户按escape菜单应该弹出,暂停时间(它确实)和恢复时,无论是恢复按钮被点击(button2)或escape被按下,但这只工作一次,代码不再运行(即更新过程不再运行)-请有人帮助我解决这个问题。

当我运行一个脚本,这是附加到我的画布弹出暂停菜单,它只运行一次

在Resume()中,您将PauseMenu组件设置为false

GetComponent< PauseMenu >().enabled = false;

但是您没有做任何事情来返回暂停函数中的组件。因此,脚本在第一次切换后被禁用,并且再也不会运行了。

可能是这个问题吗?