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?
Sí 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?