Return without Break

I want do return a value from a function and let the function running.

private var cooldown : boolean = false;

public function HasCooldown() : boolean {
	if(!cooldown) {
		cooldown = true;
		return false; //Here i want to return false but let the function going

		yield WaitForSeconds(5);

		cooldown = false;
	}
	else{
		return false;
	}
}

I know that I can start a new function to use yield WaitForSeconds, but I want to know if it is possible.

Hope you can help.

No that isn’t possible. As soon as you make a coroutine then it cannot return a value. Given you are using UnityScript you only have one way of getting any kind of “pseudo” return value from your function, and that is by passing a class to it, in which you set a value.

so:

     class CoolDownReturnValue
     {
        var hasCoolDown : boolean;
     }

     function HasCooldown(var retVal : CoolDownReturnValue)
     {
          if(!cooldown)
          {
              retVal.hasCoolDown = false;
              ...
              yield WaitForSeconds(5);
          }
          else
              retVal.hasCoolDown = true;
     }

     function CallIt()
     {
           var coolDown = new CoolDownReturnValue();
           HasCooldown(coolDown);
           if(coolDown.hasCoolDown)
           {
           }
     }

This will only work because the coroutine runs until the first yield immediately.