首页 > 解决方案 > 从 pausescreen C# 到菜单

问题描述

在这段代码中,我确实制作了一个暂停菜单,其中包含一些按钮,如恢复和菜单。如果我点击菜单,我会进入菜单,但时间仍然冻结,如果我再次按 Escape,我可以继续玩游戏。为什么这样做。如果您按菜单 i 进入菜单并激活 Resume 方法。如果我只是按恢复,恢复方法可以正常工作,但是当我单击菜单时,该方法不起作用。

using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    
    public class PauseMenu : MonoBehaviour
    {
    
        public static bool GameIsPaused = false;
    
        public GameObject pauseMenuUI;
    
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                if (GameIsPaused)
                {
                    Resume();
                }
                else
                {
                    Pause();
                }
            }
        }
    
        public void Menu()
        {
            Resume();
            SceneManager.LoadScene(0);
        }
    
        public void Resume()
        {
            pauseMenuUI.SetActive(false);
            Time.timeScale = 1f;
            GameIsPaused = false;
        }
    
        public void Pause()
        {
            pauseMenuUI.SetActive(true);
            Time.timeScale = 0f;
            GameIsPaused = true;
        }
    }

当我单击菜单时,我尝试将服务器时间刻度恢复正常,但时间刻度仍然为 0,因此您必须再次进入暂停菜单才能单击恢复,并且时间刻度再次正确,但这不是它应该如何工作的。

标签: c#unity3dtime

解决方案


代码应该可以工作,但是您是否将脚本设置为暂停菜单画布?如果是这样,您还需要OnClick()在检查器中的每个按钮上设置一个事件。

希望这会奏效!


推荐阅读