Delay between each reapeat for in IEnumerator

I get a small delay in my android test build after each for loop.

public IEnumerator Pickup()
{
    for (int i = 0; i < 40; i++) 
    {
        transform.localScale = Vector2.Lerp (transform.localScale, new Vector2 (1.5f,0.5f), 15f*Time.deltaTime);
        yield return 0;
    }

    //Delay here

    for (int i = 0; i < 60; i++) 
    {
        transform.localScale = Vector2.Lerp (transform.localScale, new Vector2 (0.25f,2f), 15f*Time.deltaTime);
        yield return 0;
    }

    //Delay here

    for (int i = 0; i < 30; i++) 
    {
        transform.localScale = Vector2.Lerp (transform.localScale, new Vector2 (0.25f,2f), 30f*Time.deltaTime);
        SR.color = Color.Lerp (SR.color, new Color (0f, 0f, 0f, 0f), 0.06f);
        yield return 0;
    }
    SR.color = new Color (0f,0f,0f,0f);
    Data.GetComponent<DataStore>().Clams += 1;
    Hook.GetComponent<Hook>().TotalClams += 1;
    Destroy(gameObject);
}

I did change it to the inbuilt animator system after posting this but still experienced odd delays which meant the animation started a lil late so I left the post up. Thanks for trying to help :smiley:

Are those animations? If so I think it would be easier for you to use the built in animation system (Unity - Manual: Animation system overview).
This could be an animation for your object that does the actions you wrote above and then and in the animator window you need some “idle” state (can have an animation but it doesn’t have to) which transitions to your pickup animation state. You can add a trigger parameter which you set as a condition for the transition.
In the code you need a reference to the animator component (let’s assume it’s named animator) and write animator.SetTrigger("YOUR TRIGGER PARAMETER NAME"); in your PickUp method which now can return void (or something else if you want to) instead of IEnumerator (it’s not a coroutine now).
Hope this helps!