unity coroutine

Code Example - unity coroutine

                
                        void Start() {
  StartCoroutine("func"); // Start coroutine named "func"
}

IEnumerator func() {
  Debug.Log("Hello");
  yield return new WaitForSecondsRealtime(1); //Wait 1 second
  Debug.Log("World");
}
                    
                
 

how to write coroutine in unity

                        
                                using UnityEngine;
using System.Collections;// In this example we show how to invoke a coroutine and execute
// the function in parallel.  Start does not need IEnumerator.public class ExampleClass : MonoBehaviour
{
    private IEnumerator coroutine;    void Start()
    {
        // - After 0 seconds, prints "Starting 0.0 seconds"
        // - After 0 seconds, prints "Coroutine started"
        // - After 2 seconds, prints "Coroutine ended: 2.0 seconds"
        print("Starting " + Time.time + " seconds");        // Start function WaitAndPrint as a coroutine.        coroutine = WaitAndPrint(2.0f);
        StartCoroutine(coroutine);        print("Coroutine started");
    }    private IEnumerator WaitAndPrint(float waitTime)
    {
        yield return new WaitForSeconds(waitTime);
        print("Coroutine ended: " + Time.time + " seconds");
    }
}
                            
                        
 

unity yield return

                        
                                public class WaitForMouseDown : CustomYieldInstruction
{
    public override bool keepWaiting
    {
        get
        {
            // Example of condition :!Input.GetMouseButtonDown(1);
            // To keep coroutine suspended, return true.
            // To let coroutine proceed with execution, return false.
            return false;
        }
    }
    
    // Not sure about if this constructor is necessary.
    public WaitForMouseDown()
    {
        Debug.Log("Waiting for Mouse right button down");
    }
}

public class GameManager{

	public void Start(){
    
    var routine = waitForMouseDown();
    StartCoroutine(routine);
    }
    
     public IEnumerator waitForMouseDown()
    {
        yield return new WaitForMouseDown();
        Debug.Log("Right mouse button pressed");
    }

}