我的暂停菜单有一个奇怪的问题。
当我按 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;
}
有谁知道如何暂停整个游戏?
最佳答案
Update()
和 OnGUI()
与时间尺度无关,因此它们不受将 Time.timeScale
设置为 的影响>0
。只有 FixedUpdate()
会受到影响。
作为Documentation说:
When timeScale is set to zero the game is basically paused if all your functions are frame rate independent. (emphasis by me)
您应该在 Update()
调用背后使用一些逻辑,例如:
1) 让运动依赖于时间尺度。如果您的角色随着翻译移动,请执行以下操作:
transform.Translate(Vector3.forward * Time.deltaTime);
2) 仅在游戏未暂停时应用Update()
逻辑:
void Update(){
if (Time.timeScale == 0)
return;
//...
}
或
void Update(){
if (pause)
return;
//...
}
关于c# - 暂停菜单不起作用 - UNITY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724206/