Activate Animation => Wait => Hide Gameobject

Hi there! Im developing with Vuforia AR plugin.
I want to Activate an animated gameobject, wait for some seconds and the hide that gameobject and show another one!
I tried differents things(invoke, WaitForSeconds, Destroy(GO,time)<= this one runned ok but when I tried to show the GO again obviusly I was in trouble) but I can’t make it run the delay.
The code:

public IEnumerator Delay () 
{
	Debug.Log("Funcion delay");
	yield return new WaitForSeconds(0.1f);
}
       
void Update() 
{
	if( TouchEvent ) // PSEUDO CODE
	{
		// ** RELEVANT PART **
		menu2.renderer.enabled = false;
		GameObject animacion = GameObject.Find("RULETA");
		activarAnimacion(animacion);
		
		desactivarAnimacion(animacion);
		menu2.renderer.enabled = true;
		// ** RELEVANT PART **
	}
}

void activarAnimacion(GameObject animacion)
{
	// [...]
	//activo la animacion
	animacion.animation.Play();
	Delay();
}
void desactivarAnimacion(GameObject animacion)
{
	// [...]
	//desactivo la animacion
	animacion.animation.Stop();
	Debug.Log("Desactiva anim");
}

Thank you!

[ Edit by berenger : trimmed irrelevant code. Full code available at PasZ full code, paste by Berenger - Pastebin.com]

So, you are not using coroutines correctly.

First, a coroutine will only delay the execution of the code following the yield inside its scope. Wich means that your Delay function exectute the Debug.Log, wait and leave. But Update didn’t wait. So the animation was started the stopped at the same frame.

Secondly, in C# you need to call a coroutine with StartCoroutine, or it won’t be executed at all.

You can’t use Invoke directly because you have a parameter. You could store the animacion variable into a member though. Anyway, for the coroutine. When you have the event triggering the animation, use StartCoroutine( Animate(animacion) ); Here is Animate’s code :

private IEnumerator Animate( GameObject A )
{
    // ...
    activarAnimacion( A );
    
    // Unless you're sure the animation's length is 0.1 seconds,
    // you should use A.animation[ A.animation.clip.name ].Length here
    yield return new WaitForSeconds(0.1f);

    // ...
    desactivarAnimacion( A );
}

Hey dear! Lot of thanks for your answer!
I tried compiling with this code: Codigo para Unity3d Answer - Pastebin.com

But nothing was rendered! So I used debugging logs and I checked that the Animate function never is executed! Any idea??

PasZ