Unidad: retorno de rendimiento de IEnumerator nulo

Actualmente estoy tratando de entender IEnumerator & Coroutine dentro del contexto de Unity y no estoy muy seguro de lo que realiza el "rendimiento de retorno nulo". Por el momento, creo que básicamente hace una pausa y espera el siguiente fotograma y en el siguiente fotograma volverá a realizar la declaración while nuevamente.

Si dejo de lado el "rendimiento de retorno nulo", parece que el objeto se moverá instantáneamente a su destino o tal vez "saltará muchos fotogramas". Así que supongo que mi pregunta es cómo funciona este "retorno de rendimiento nulo" dentro de este ciclo while y por qué es necesario tenerlo.

void Start () {
    StartCoroutine(Move());
}

IEnumerator Move(){

    while (a > 0.5f){

        ... (moves object up/down)

        yield return null; // <---------
    }

    yield return new WaitForSeconds(0.5f);

    .... (moves object up/down)

    StartCoroutine(Move());
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta