暂停菜单不起作用 - UNITY

时间:2018-06-06 15:30:16

标签: c# unity3d

我的暂停菜单有一个奇怪的问题。 当我按下ESC时,它会被按下。打开我的菜单并停止游戏"除了字符。 我正在使用Time.TimeScale = 0f;。 我已经看到TimeScale的一个问题影响了游戏中的所有内容""如果它对我的角色不起作用,那是因为他们不在同一个TimeScale中。

我在Visual Studio 2017中使用UNITY 3D 5.6.0。

我的代码:

public static bool pause = false;
public GameObject pauseMenu;

void Update () {
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        if(pause)
        {
            Continuer();
        }
        else
        {
            Pause();
        }
    }
}

public void Continuer()
{
    pauseMenu.SetActive(false);
    Time.timeScale = 1f;
    pause = false;
}
public void Pause()
{
    pauseMenu.SetActive(true);
    Time.timeScale = 0f;
    pause = true;
}

有谁知道如何暂停整个游戏?

1 个答案:

答案 0 :(得分:3)

Update()OnGUI()是时间尺度独立的,因此将Time.timeScale设置为0不会影响他们。只有FixedUpdate()会受到影响。

正如Documentation所说:

  

当timeScale设置为零时,游戏基本上暂停如果全部停止   您的功能与帧速率无关(我强调)

您应该在Update()电话后面使用一些逻辑,例如:

1)让动作与时间尺度有关。如果您的角色随着翻译而移动,请执行以下操作:

transform.Translate(Vector3.forward * Time.deltaTime);

2)仅在游戏未暂停时才应用Update()逻辑:

void Update(){
     if (Time.timeScale == 0)
         return;
     //...
 }

void Update(){
     if (pause)
         return;
     //...
 }