游戏完成后重新启动,但重新启动后几秒后意外退出。我应该采取什么步骤来调试这个问题? 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 = "";
}
}
}
}
我想你应该打电话 RestartGameAfterDelay(restartDelay); 代替 StartCoroutine(RestartGameAfterDelay(restartDelay)); 我找不到启动协程的原因,该协程将在重新启动后立即被丢弃。 另外我建议你使用新的 awaitable 类 来延迟,在更改时间尺度时,Unity 时间系统和 C# 时间系统之间没有冲突。 (或类似的东西)