Question by 
               lilshredder · Nov 09, 2017 at 09:11 PM · 
                errorcoroutinedelayhow  
              
 
              Wait for 7 Seconds not working
I am having problems with the StartCoroutine to wait for 5 seconds. I directly used the example from unity, but it is not working. Help is greatly appreciated. Thank you!
using UnityEngine; using System.Collections;
 public class ToScene2 : MonoBehaviour {
 
     public GameObject[] Scene1;
     public GameObject[] Scene2;
     public GameObject[] Scene2Loaded;
 
 
     IEnumerator Example()
     {
         print(Time.time);
         yield return new WaitForSeconds(5);
         print(Time.time);
     }
     
     // Update is called once per frame
     void Start () {
         
         Vector3 pos = new Vector3 (0, 0, 0);
         transform.position = pos;
 
         StartCoroutine(Example());
         {
 
             for (int i = 0; i < Scene1.Length; i++) {
 
                 Destroy (Scene1 [i].gameObject);
             }
 
             for (int i = 0; i < Scene2.Length; i++) {
 
                 Instantiate (Scene2 [i], transform.position, Quaternion.identity);
             }
         }
     }
 }
 
 
              
               Comment
              
 
               
              Answer by Dryn27 · Nov 09, 2017 at 10:39 PM
It's working, but not as you think. That coroutine is waiting 5 seconds, but that doesn't stop the Start function from going on with its code, only stops the code inside the coroutine. You can write the code inside that coroutine instead, to have it the way you want, something like:
 public class ToScene2 : MonoBehaviour {
  
      public GameObject[] Scene1;
      public GameObject[] Scene2;
      public GameObject[] Scene2Loaded;
  
  
      IEnumerator Example()
      {
          print(Time.time);
          yield return new WaitForSeconds(5);
          print(Time.time);
          for (int i = 0; i < Scene1.Length; i++) {
                  Destroy (Scene1 [i].gameObject);
              }
          for (int i = 0; i < Scene2.Length; i++) {
                  Instantiate (Scene2 [i], transform.position, Quaternion.identity);
              }
      }
      
      // Update is called once per frame
      void Start () {
          
          Vector3 pos = new Vector3 (0, 0, 0);
          transform.position = pos;
 
          StartCoroutine(Example());
 
      }
  }
 
              Your answer
 
             Follow this Question
Related Questions
How do i fix this error? 0 Answers
Parsing error CS8205,Parsing Error CS8205 2 Answers
Setting button intractability causes an error 1 Answer
C# Simple delay at void Update? 2 Answers