统一重启游戏

问题描述 投票:0回答:1

游戏完成后重新启动,但重新启动后几秒后意外退出。我应该采取什么步骤来调试这个问题? Unity编辑器里需要改吗?

我希望Unity中的这个游戏在正确完成后延迟4秒重新启动。

using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
using TMPro;

public class BallController : MonoBehaviour
{
    private float collisionTime = 0f;
    private bool timerActive = true;
    public float collisionThreshold = 5f;
    public float restartDelay = 4f;
    public TextMeshProUGUI timerText;
    public GameObject cylinderPrefab;

    private GameObject cylinderObject;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("CylinderTag"))
        {
            collisionTime = Time.time;
            timerActive = true;
            cylinderObject = collision.gameObject;
        }
        else if (collision.gameObject.CompareTag("Ground"))
        {
            timerActive = false;
            UpdateTimerText();
        }
    }

    void Update()
    {
        if (timerActive && Time.time - collisionTime > collisionThreshold)
        {
            if (cylinderObject != null)
            {
                Destroy(cylinderObject);
            }
            StartCoroutine(RestartGameAfterDelay(restartDelay));
        }

        UpdateTimerText();
    }

    IEnumerator RestartGameAfterDelay(float delay)
    {
        yield return new WaitForSeconds(delay);
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

    void UpdateTimerText()
    {
        if (timerText != null)
        {
            float remainingTime = Mathf.Max(0f, collisionThreshold - (Time.time - collisionTime));

            if (timerActive)
            {
                timerText.text = $"Time: {remainingTime:F1}s";
            }
            else
            {
                timerText.text = "";
            }
        }
    }
}

c# unity-game-engine debugging restart
1个回答
0
投票

我想你应该打电话 RestartGameAfterDelay(restartDelay); 代替 StartCoroutine(RestartGameAfterDelay(restartDelay)); 我找不到启动协程的原因,该协程将在重新启动后立即被丢弃。 另外我建议你使用新的 awaitable 类 来延迟,在更改时间尺度时,Unity 时间系统和 C# 时间系统之间没有冲突。 (或类似的东西)

© www.soinside.com 2019 - 2024. All rights reserved.