unity3d 暂停屏幕脚本不工作,因为它不显示我的游戏对象为活动

3ks5zfa0  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(135)

我想为我的Unity游戏做一个简单的暂停屏幕,但是,当我按下预定的按钮(p)时,它不显示,也没有设置为活动。
Here's an image of the script which i haven't finished yet since i just wanted to display the pause menu
代码摘录:

using UnityEngine
public class pauseManager : MonoBehaviour
{
   public GameObject pauseScreen;

   void Start()
   {
      pause();
   }
   
   void Update()
   {
      if(Input.GetKeyDown(KeyCode.P))
      {
        pause();
      }
   }

    public void pause()
    {
        pauseScreen.SetActive(true);
    }
}

我将控制暂停屏幕的gameobject设置为非活动状态,这样当游戏开始时,它就不会显示,而且我还在pauseScreen变量中使用了该gameobject。

cgh8pdjw

cgh8pdjw1#

看起来您正尝试使用更新功能在禁用的对象上检查键盘输入。这不起作用,因为更新不会在禁用的游戏对象上运行。为了解决这个问题,您需要创建一个始终处于活动状态的游戏对象来控制您的暂停屏幕。
以下是一个可能的修复方法:
1.创建一个可以随时运行update方法的单独的游戏对象,并在其中附加一个新的C#脚本
1.在新的C#脚本中,在脚本中创建对所创建的暂停屏幕对象GameObject的引用

[SerializeField] private Gameobject pauseScreen;

1.现在,在这个脚本的update方法中,我们检查“P”键是否被按下。如果它被按下,我们将切换暂停屏幕对象的活动状态。

private void Update()
{
    if(Input.GetKeyDown(Keycode.P))
        pauseScreen.setActive(!pauseScreen.ActiveSelf);
    }
}

希望这对你有用。

相关问题