Я очень плохо знаком с 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();
}
}
}
Я хочу, чтобы перезапуск был отложентак что игра не перезапускается мгновенно.Любая помощь будет принята с благодарностью:)