coroutinesを使用すると、SceneManagerの呼び出しを遅らせることができます。 LoadScene機能、現在のシーンについての情報を取得するGetActiveScene機能と一緒に:
private IEnumerator RestartSceneAfterDelay(float delay = 10f)
{
yield return new WaitForSeconds(delay);
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex) ;
}
をそして次のように関数を呼び出す:
private void OnTriggerEnter(Collider other)
{
GameObject.Find("Camera (eye)").SendMessage("StopTimer");
StartCoroutine(RestartSceneAfterDelay()) ;
// OR
StartCoroutine(RestartSceneAfterDelay(5f)) ;
}
他のソリューション(ただしほど良好ではありません最初のもの)は、Invoke関数を使用してシーンマネージャへの呼び出しを遅延させることです。ただし、関数への呼び出しは後でデバッグすることが困難な文字列から行われるため、この方法は避けてください。あなたは、このようなユーティリティ関数を作ることができる遅延の後に何かをする
private void RestartScene()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex) ;
}
private void OnTriggerEnter(Collider other)
{
GameObject.Find("Camera (eye)").SendMessage("StopTimer");
Invoke("RestartScene", 5f) ;
}
それは素晴らしい作品です! Scene Managerを使用するために、スクリプトの先頭に「UnityEngine.SceneManagement;を使用する」を追加する必要がありました –