Set a Bool Through Function

Hello everyone, i got a little problem. I’d like to write my codes a little flexible, so I am trying to write a function, which will turn the desired bool variable to desired result after some time. What I mean is :

IEnumerator WaitAndSetBool(float waitTime, bool booleanToSet, bool setTo)
{
yield return new WaitForSeconds(waitTime);
booleanToSet = setTo;
}

I write something like this, and i call it like this :

StartCoroutine(WaitAndSetBool(0.5f, canLerp, false);

What it is supposed to do is, giving the canLerp boolean to WaitAndSetBool function, telling that function to set it to false. But it doesn’t work, what am i missing ?

If i change the WaitAndSetBool function like this :

yield return new WaitForSeconds(waitTime);
canLerp = setTo;

it does work. But i don’t want this function to be only used for canLerp boolean, i want it to be something general. How can i fix this ? Thanks :slight_smile:

Booleans, like all other primitive types, are passed by value, not reference. In other circumstances you could explicitly pass by reference (use the ref keyword) instead, except that only works with standard functions, not coroutines. A work-around is to create a custom class (since classes are always passed by reference) that contains only a bool, and use your custom BoolClass instead of a standard boolean.