Hello there…
Alright, so im new to the whole yield keyword and corutines in unity.
So im pretty confused as it is, and not having it behave like it ‘should’, doesnt make it easier ![]()
Anyway, here’s what i want to do:
This is taken directly from here.
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
IEnumerator Do() {
print("Do now");
yield return new WaitForSeconds(2);
print("Do 2 seconds later");
}
void Example() {
Do();
print("This is printed immediately");
}
}
And this is my code:
private void SetView()
{
ActivateFirstPersonView();
Debug.Log("This is immediately after");
}
public IEnumerator ActivateFirstPersonView()
{
Debug.Log("Starting");
yield return new WaitForSeconds(2);
Debug.Log("Finished");
}
The problem is, ‘ActivateFirstPersonView’ isnt being called at all.
If i use,
StartCoroutine(ActivateFirstPersonView());
instead. Then it behaves like it should, I just dont get it?
Is it a documentation error? I hope not, because i would like to call the method without starting a coroutine, for simplicity’s sake.
"i would like to call the method without starting a coroutine, for simplicity's sake." That doesn't make any sense. Please elaborate
– JessyIf you create a blank project, does the sample code not work?
– runonthespotThe documentation is bugged; try it. That's what happens when the script reference is only auto-converting the original UnityScript. It explicitly states here that you need to use StartCoroutine (unless you plan to move through it manually, but that won't run as efficiently, and will require more code than the function call). http://answers.unity3d.com/questions/14495/confused-about-coroutines.html
– JessyYeah, you need to use StartCoroutine to start coroutines in C#. That looks like a docs bug.
– PrimeDerektiveIf you want to avoid manually using StartCoroutine, then you have to use Unityscript and not C#.
– Eric5h5