While loop freezes game for 3 seconds then unfreezes (not infinite loop!) c#
Hi guys,
I have a function which contains purely a while loop however when the while loop is active the game freezes, then when the timer breaks the while loop as expected the game unfreezes and all movement options inside the while loop are inaccessible.
void keepVelocityTest(bool keepVelocityForWhile) {
print ("Reach Here");
Debug.Log (keepVelocityForWhile);
while (keepVelocityForWhile)
{
print ("whileLoop");
keepVelocityTimer += Time.deltaTime;
if (Input.GetKey(KeyCode.A))
{
print ("shouldwork??");
VelocityX = Mathf.SmoothDamp(VelocityX, (VelocityX > targetVelocityWalking)? VelocityX: -targetVelocityWalking, ref smoothTime, friction);
}
else if (Input.GetKey(KeyCode.D))
{
VelocityX = VelocityX;
}
if (keepVelocityTimer > 3)
{
keepVelocityForWhile = false;
keepVelocityTimer = 0;
}
}
}
As you can see I am printing/debugging to find out where the error is.
All the prints/debugs work however there is no movement and the game freezes.
Does anyone have any idea what could be the cause to this?
Thanks in advance, Matt
I think I might have just answered my own question.. Is this an issue due to when pressing A, the if loop runs and stops the while loop looping? I noticed that if i hold 'A' down the freezing lasts longer as if it was stuck in the while loop due to holding A. If so, what could be a work around?
Answer by gameplay4all · Oct 27, 2015 at 09:53 PM
This whole while loop is executed in one single frame, so it 'holds' the frame for 3 seconds(not exactly since deltatime isn't updated). Look up coroutines, that's what you want to use here :)
Your answer
Follow this Question
Related Questions
Unity crashes when using while loop 0 Answers
Loop variables (Names of Inputfields / Labels) 1 Answer
Unity always freezes using this code, why? 3 Answers
*Solved* Loop instantiating objects causes my Unity Editor to crash 1 Answer
,Code in loop simultaneously executing on members of array rather than iterating one at a time 1 Answer