Я бы советовал делать всё с таймером не на инвоке, а на IEnumerator'е, там всё наглядней некуда:
IEnumerator test() //Создаёшь новый IEnumerator
{
//Внутри можешь писать код как в обычном методе
yield return new WaitForSeconds(<секунды>); //Ждёт нужное количество секунд
}
Таким образом всё ещё проще и понятнее на мой взгляд
А там дальше создаёшь переменную с секундами для ожидания, и прибавляешь в зависимости от чего либо ифами, ну или просто так. Только вот нужно в IEnumerator'е хотя бы одно ожидание сделать, или будет вылетать исключение
UPD: забыл сказать, что вызвать её нужно не как функцию, хоть по сути функцией и является, а так:
StartCoroutine(test(/*Ну и аргументы, если нужно*/));