with unity stop startcoroutine start run monobehaviour coroutines c# unity3d coroutine

stop - wait in unity c#



¿Se necesita una StartCoroutine para una llamada desde una co-rutina a otra co-rutina? (1)

Es el StartCoroutine en el rendimiento return StartCoroutine (Bar ()); ¿necesario?

No , puede usar la yield return Bar(); .

Si estamos autorizados, ¿esto tiene algún impacto en el comportamiento / desempeño del programa?

a la pregunta de comportamiento y rendimiento.

La diferencia :

yield return StartCoroutine(coroutineFunction()) :

Corutina interna ( Bar ) se iniciará antes de ceder

Asignación de memoria : 56 bytes

Llamadas : 2

yield return coroutineFunction() :

Corutina interna ( Bar ) se iniciará después de ceder

Asignación de memoria : 32 bytes

Llamadas : 3

Más rápido :

Probablemente porque asigna menos memoria. Cuando se usa en un bucle for , es más rápido que el yield return StartCoroutine(coroutineFunction()) . Esto es incluso cierto a pesar de que tiene más llamadas. Además, Time and Self ms from Profiler muestra que sus valores son menores que los del yield return StartCoroutine(coroutineFunction()) .

En conclusión :

La diferencia de yielding es casi como la de i++ vs ++i (post e incremento previo). Si te preocupa la gestión de la memoria, yield return coroutineFunction() el segundo método, yield return coroutineFunction() ya que asigna menos memoria.

Cuando ha anidado co-rutinas como

void Update() { if(someTest) { StartCoroutine(Foo()); } } IEnumerator Foo() { doStuff = true; yield return StartCoroutine(Bar()); doStuff = false; } IEnumerator Bar() { //Very important things! }

Es el StartCoroutine en el yield return StartCoroutine(Bar()); ¿necesario?

¿Se nos permite simplemente hacer

void Update() { if(someTest) { StartCoroutine(Foo()); } } IEnumerator Foo() { doStuff = true; yield return Bar(); doStuff = false; } IEnumerator Bar() { //Very important things! }

Si estamos autorizados, ¿esto tiene algún impacto en el comportamiento / desempeño del programa?