Current implementation: Start -> first spawn time -> [spawn] -> firstspawntime -> [spawn] -> interval(fixedDelayBetweenSpawns) -> [spawn] Expected implementation: Start -> first spawn time -> [spawn] -> interval(fixedDelayBetweenSpawns) -> [spawn] -> interval(fixedDelayBetweenSpawns) Fix code: void SetupTimer() { timeLeft = firstSpawnTime; ElapsedBehaviour(); // set interval Elapsed += Spawn; Elapsed += ElapsedBehaviour; #if UNITY_EDITOR UltimateLog(string.Format("SetupTimer")); #endif }