Im newbie in unity and i want make delay process for adding process of number. I use coroutine but when i play it, it is freezing.
Here it my code : Please help me
Note : ax, ay, and az are double variable
public void startCountLiquid(){
mainSlider.interactable = false;
ax = setV1 (getInputV2());
ay = (double)mainSlider.value / 10;
az = ax;
while((az - ay) > 0){
startPraktikum.interactable = false;
StartCoroutine (holdASecond());
}
selesai.text = "Selesai";
}
IEnumerator holdASecond(){
yield return new WaitForSeconds(3);
az-=ay;
}
It looks like you are starting a new coroutine ever time that while loops runs and it is causing an infinite loop. the holdASecond() routine never gets to complete.
change the while to an if :
`if (az - ay) > 0){
StartCoroutine (holdASecond());
startPraktikum.interactable = false;
}`
and then put selesai.text = "Selesai";
into the coroutine
I changed your startCountLiquid return type from void
to IEnumerator
and add a yield
inside the while bucle. If you need to call startCountLiquid from an OnClick()
event from UI, you can just add another function to call it. Something like public void StartCountDown() { StartCoroutine( startCountLiquid() ); }
public IEnumerator startCountLiquid(){
mainSlider.interactable = false;
ax = setV1 (getInputV2());
ay = (double)mainSlider.value / 10;
az = ax;
while((az - ay) > 0){
startPraktikum.interactable = false;
yield return holdASecond();
}
selesai.text = "Selesai";
}
IEnumerator holdASecond(){
yield return new WaitForSeconds(3);
az-=ay;
}