C# SceneManager script not loading next scene after (seconds)
Hi guys, I've been working on a C# script to load a new scene after 7 seconds. I've got no errors or warnings and my scene IS called 'MainMenu' so any ideas as to why this isn't actually loading the scene?
I've tried building the project and made sure all the scenes were added - any ideas?
using UnityEngine.SceneManagement;
using UnityEngine;
using System.Collections;
public class Load_MainMenu : MonoBehaviour {
public void ModeSelect()
{
StartCoroutine("Wait");
}
IEnumerator Wait()
{
yield return new WaitForSeconds(7);
SceneManager.LoadScene("MainMenu");
}
}
Answer by brendans95 · Jan 30, 2016 at 09:19 PM
EDIT: Final code to include Inspector fields to clarify what scene to load as well as delay time:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class LoadSceneWithDelay : MonoBehaviour
{
public string SceneToLoad = "";
public float DelayTime = 3.0f;
public void Start()
{
StartCoroutine("Wait");
}
private IEnumerator Wait()
{
yield return new WaitForSeconds(DelayTime);
SceneManager.LoadScene(SceneToLoad, LoadSceneMode.Single);
}
}
Answer by Haythamcrc · Jan 30, 2016 at 11:35 AM
using UnityEngine.SceneManagement;
using UnityEngine;
using System.Collections;
public class Load_MainMenu : MonoBehaviour
{
public void ModeSelect()
{
StartCoroutine("Wait");
}
IEnumerator Wait()
{
yield return new WaitForSeconds(7f);
Application.LoadLevel("MainMenu");
}
}
I get an error of
"Assets/Scripts/Load_$$anonymous$$ain$$anonymous$$enu.cs(16,21): warning CS0618: UnityEngine.Application.LoadLevel(string)' is obsolete:
Use Scene$$anonymous$$anager.LoadScene'"
and even though it still runs, I'm still not getting any scene load! >.<
Answer by Yuanfeng · Jan 31, 2016 at 02:36 PM
Make Sure the timescale hasn't been 0. The WaitForSeconds is influence by the timescale. You can test it on the editor, And Check from the project setting --> Time to see if the timescale has been set to 0. And are you sure that you had call the ModeSelect function? Maybe you can log a message to make sure the function had been called correct.
Answer by Nicolas_14 · Mar 27, 2016 at 10:25 PM
I know this Is not actually an answer but I'm getting the same problem!
Hey dude - I ended up changed up the code later on to work better. This should work perfectly for ya ;D With this you can also specify what scene you want to load in the Inspector as opposed to putting it in the code itself - same with the delay time.
using UnityEngine;
using System.Collections;
using UnityEngine.Scene$$anonymous$$anagement;
public class LoadSceneWithDelay : $$anonymous$$onoBehaviour
{
public string SceneToLoad = "";
public float DelayTime = 3.0f;
public void Start()
{
StartCoroutine("Wait");
}
private IEnumerator Wait()
{
yield return new WaitForSeconds(DelayTime);
Scene$$anonymous$$anager.LoadScene(SceneToLoad, LoadScene$$anonymous$$ode.Single);
}
}