【问题标题】:Can someone fix my pause script?有人可以修复我的暂停脚本吗?
【发布时间】:2015-10-24 12:14:28
【问题描述】:

有人可以修复我的暂停菜单脚本吗?(我想让它停止球)这是我的项目的链接:http://mediafire.com/download/33poh7jalkcvjzh/Jumpy+ball.rar

使用 UnityEngine; 使用 System.Collections;

公共类 pauseMenu : MonoBehaviour { 公共 GUISkin myskin;

private Rect windowRect;
private bool paused = false , waited = true;
private float time = 60f;

private void Start()
{
    windowRect = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 100, 200, 200);
}

private void waiting()
{
    waited = true;
}

private void Update()
{
    if (waited)
        if (Input.GetKey(KeyCode.Escape) || Input.GetKey(KeyCode.P))
    {
        if (paused)
            paused = false;

        else
            paused = true;

        waited = false;
        Invoke("waiting",0.3f);
    }
    if(!paused)
        if(time>0)
            time -= Time.deltaTime;
}

private void OnGUI()
{
    if (paused)
        windowRect = GUI.Window(0, windowRect, windowFunc, "Pause Menu");
    GUI.Box(new Rect(1, 2, 70, 30), "Time: " + time.ToString("0"));
}

private void windowFunc(int id)
{
    if (GUILayout.Button("Resume"))
    {
        paused = false;
    }
    if (GUILayout.Button ("Restart")) 
    {
        Application.LoadLevel("LEVEL 1");
    }
    if (GUILayout.Button("Quit"))
    {
        Application.LoadLevel("Main Menu");
    }
}

}

【问题讨论】:

  • 您已经发布了 3 次相同的问题,实际上在之前的帖子中您已经有一个接受的答案 :) 您可能会在统一论坛上获得更多/更快的帮助。
  • 我知道,但你给了我一个好主意

标签: c# unity3d monodevelop


【解决方案1】:

使用Time.timeScale 暂停/取消暂停游戏(即停止球移动),如下所示:

Time.timeScale = 0f; // paused
Time.timeScale = 1f; // unpaused

请记住,当Time.timeScale 为 0 时,Time.deltaTime 将为 0,因此在某些情况下您可能希望使用 Time.unscaledDeltaTime

【讨论】:

  • 很高兴我能帮上忙。如果有帮助,请将其选为“已接受的答案”。
【解决方案2】:

改用这个:

IEnumerator StopBall(float delay)
{
    yield return new WaitForSeconds(delay);
    // Stop the ball code
}

这样称呼它:

StopBall(0.5f);

其中 0.5f 是您要等待的金额。请记住将 F 添加到数字的末尾,因为它是一个浮点数。问候。

【讨论】:

  • 请查看我的项目文件(上面的链接)并修复它,因为它不起作用。我想暂停我的游戏在未确定的时间段
  • @GabiDobre 我可能会在某个时候看看它,因为它是 145MB,所以不要将它下载到我的 android 中:D
  • @GabiDobre 这是解决您问题的答案吗?我的意思并不是像我要求声誉那样听起来,但为了将来搜索尝试解决相同问题的用户,正确的答案应标记为“已接受” - 这就是 StackOverflow 的最佳工作方式。如果这确实是正确答案,我深表歉意。
  • @Arx +1 我认为你是绝对正确的。即使我的回答在某种程度上是正确的,您的回答也应该被标记为已接受。我有一种感觉,他创建了一个帐户只是为了得到那个问题的答案。希望他能读到这篇文章并为您赢得声誉:)
猜你喜欢
  • 2014-02-06
  • 2020-10-02
  • 1970-01-01
  • 2017-09-26
  • 2022-01-18
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多