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");
}
}