WaitForSeconds is not accurate in a loop.

// Where time is 10
IEnumerator Timer(float time)
{
for(int i = 0; i < time*100; i++)
{
yield return new WaitForSeconds(0.01f);
}

    Debug.Log("This is supposed to be printed 10 seconds later");
}

I actually get that message 16 seconds later. I think it’s not the compiler causing delays in my timer method because it’s just a simple loop, or is it?

Coroutines “steps” can only occur as fast as whatever your frame rate is, so that’s why it’s taking longer than 10 seconds. You’ll have to rethink about how you want to accomplish your goal.