我的暂停菜单有一个奇怪的问题。
当我按下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;
}
有谁知道如何暂停整个游戏?
答案 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;
//...
}