making a delay when using a floodFill

iam using C#, the sprite manager and a floodFill to color some “sprites” when i click them, if the near colors are the same that the one i click they all change color, currently they all change at the same time the moment i click, what i want is for them to change like one second afther the one i click, one afther the other.

but i cant use the yield, i tryed many things, but didnt work because the funcion of the floodfill is not actualy in the update.

here is how my code works:

1.- make a board of squares of diferent colors.
2.- when i click at a square all the squares touching a side should change to “x” color, but one at a time not all instantly.

so i want to make a delay wen the color changes.

my code is all messy but ill post the floodFill:

public void FloodFill (Vector3 startPoint, Vector3 direction, RaycastHit outDirection, string targetColor, int newInfektPos)
	{
		Vector3 outPosition;
		
		
		//print ("Start Posisiton: " + startPoint);
		if(Physics.Raycast (startPoint, direction, out outDirection, 10))
		{
			
	
			outPosition = outDirection.transform.position; 
										
			if(outDirection.transform.tag == targetColor)
			{
				
				InfektPosition (newInfektPos, outDirection);
		
				FloodFill (outPosition, up, hitTileUp, originalTag, newInfektPos +20);
				FloodFill (outPosition, front, hitTileLeft, originalTag, newInfektPos +1);
				FloodFill (outPosition, down, hitTileDown, originalTag, newInfektPos -20);
				FloodFill (outPosition, back, hitTileRight, originalTag,newInfektPos -1);

			}
			else
			{
				//print ("this is other color: " + direction + outDirection.transform.name + outDirection.transform.tag);
			}
		}
	}

and this is the function that “changes the color”

public int InfektPosition (int n, RaycastHit tagToChange)
{
	tilePosition = n; // Set the value for tilePosition.
	tagToChange.transform.tag = "verde";

	spriteMan.AddSprite((GameObject)blocks[tilePosition], scale, scale, defaultSize, tileY, xSize, ySize, false);
	spriteMan.MoveToFront(infekTile);

	// Add a delay here!
	
	//Delay(58);

	return tilePosition;
}

Start FloodFill with StartCoroutine(FloodFill(…

 public IEnumerator FloodFill (Vector3 startPoint, Vector3 direction, RaycastHit outDirection, string targetColor, int newInfektPos)
    {
       Vector3 outPosition;


       //print ("Start Posisiton: " + startPoint);
       if(Physics.Raycast (startPoint, direction, out outDirection, 10))
       {


         outPosition = outDirection.transform.position; 

         if(outDirection.transform.tag == targetColor)
         {

          InfektPosition (newInfektPos, outDirection);
          yield return new WaitForSeconds(1);
          StartCoroutine(FloodFill (outPosition, up, hitTileUp, originalTag, newInfektPos +20));
          StartCoroutine(FloodFill (outPosition, front, hitTileLeft, originalTag, newInfektPos +1));
          StartCoroutine(FloodFill (outPosition, down, hitTileDown, originalTag, newInfektPos -20));
          StartCoroutine(FloodFill (outPosition, back, hitTileRight, originalTag,newInfektPos -1));

         }
         else
         {
          //print ("this is other color: " + direction + outDirection.transform.name + outDirection.transform.tag);
         }
       }
    }