Adanos, Unity działa inaczej, absolutnie nie chodzi o pętlę while ;p Cały silnik czekałby z renderowaniem następnej klatki aż się ona skończy, zły pomysł. Takie rzeczy powinno robić się w pętli Update, za każdym razem zwiększając licznik czasu o ilość czasu jaka minęła od ostatniego wywołania tej pętli.
float timePassed = 0.0;
void Update ()
{
timePassed += Time.deltaTime;
if (timePassed >= 3.0 && curAmmo == 0)
{
timePassed = 0.0;
curAmmo = 15;
}
}
Ten kod będzie co trzy sekundy ustawiał curAmmo na 15 pod warunkiem że było zerowe i minęły conajmniej trzy sekundy od ostatniego razu. Ciągle nie rozumiem dokładnie co chcesz osiągnąć, napisz to bardziej matematycznie to pokażę ci jak ma wyglądać odpowiedni warunek.