当我运行一个脚本,这是附加到我的画布弹出暂停菜单,它只运行一次
本文关键字:运行 暂停 布弹出 菜单 我的 一次 一个 脚本 | 更新日期: 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;
但是您没有做任何事情来返回暂停函数中的组件。因此,脚本在第一次切换后被禁用,并且再也不会运行了。
可能是这个问题吗?