我已经通过点击退出按钮让游戏暂停和取消暂停。现在我想当游戏暂停并且用户再次点击退出按钮时,倒计时器正在滴答,当倒计时器显示时间达到0时,游戏将被取消暂停。问题是当游戏暂停时用户再次点击退出按钮时,倒数计时器没有滴答作响,游戏立即取消暂停。
以下是目前的代码:
using UnityEngine;
using System.Collections;
// Pause Logic
public class Pause : MonoBehaviour
{
public static bool paused = false; // For checking whether the game is paused or not
float seconds = 5;
float minutes = 0;
void Update()
{
// If user hit escape button
if (Input.GetKeyDown("escape"))
{
// Set the paused to togglePause method
paused = TogglePause();
}
}
void OnGUI()
{
// If paused is true
if (paused)
{
// Show the Paused GUI Box
GUI.Box(new Rect(Screen.width / 3 - 5, Screen.height - 30, 450, 25), "Paused, Press Escape button again to unpause");
}
}
bool TogglePause()
{
// If the time scale is 0 or pause
if (Time.timeScale == 0.0f)
{
// Set time scale to 1
Time.timeScale = 1f;
// and set to the false
return (false);
}
// If the time scale is 1 or unpause
else
{
if (seconds <= 0)
{
// Set time scale to 0
Time.timeScale = 0.0f;
if (minutes >= 1)
{
minutes--;
}
else
{
minutes = 0;
seconds = 0;
GameObject.Find("Pause").guiText.text = minutes.ToString("f0") + ":0" + seconds.ToString("f0");
}
}
else
{
seconds -= Time.deltaTime;
}
if (Mathf.Round(seconds) <= 9)
{
GameObject.Find("Pause").guiText.text = minutes.ToString("f0") + ":0" + seconds.ToString("f0");
}
else
{
GameObject.Find("Pause").guiText.text = minutes.ToString("f0") + ":" + seconds.ToString("f0");
}
return (true);
}
}
}
非常感谢您的回答。
答案 0 :(得分:1)
问题是您将时间刻度设置为零。因此,在跟踪时间之后,您需要具有创造性。使用以下时间计算持续时间:Time.realtimeSinceStartup。
private IEnumerator Pause(int p)
{
Time.timeScale = 0.1f;
float pauseEndTime = Time.realtimeSinceStartup + 1;
while (Time.realtimeSinceStartup < pauseEndTime)
yield return 0;
Time.timeScale = 1;
}