【发布时间】:2019-09-30 01:52:03
【问题描述】:
我对 Unity 和 C# 非常陌生,并且刚刚开始学习基础知识。我做了一个简单的游戏,它有一个向前移动的立方体,如果它碰到障碍物,游戏就会重新开始。但是,当我尝试在立方体碰撞时使用 Invoke 延迟游戏重新启动后的时间时,重新启动是即时的。
由于我还是 C# 和 Unity 的新手,所以我无法尝试太多。
这是我的 GameManager 脚本:
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
bool gameHasEnded = false;
public float restartDelay = 3f;
public void EndGame()
{
if (gameHasEnded == false)
{
gameHasEnded = true;
Debug.Log("Game Over!");
Invoke("Restart", restartDelay);
Restart();
}
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
当玩家与物体碰撞时(障碍脚本):
using UnityEngine;
public class PlayerCollision : MonoBehaviour
{
public PlayerMovement movement;
void OnCollisionEnter(Collision collisionInfo)
{
if (collisionInfo.collider.tag == "Obstacle")
{
movement.enabled = false;
FindObjectOfType<GameManager>().EndGame();
}
}
}
我希望延迟重启,以免游戏立即重启。任何帮助将不胜感激:)
【问题讨论】: