Вероятно, у вас бесконечное l oop in
while (Blendfloat != 1.0f)
{
Blendfloat = Blendfloat + 0.01f;
hand.SetFloat("Blend", Blendfloat);
}
Никогда напрямую сравнивайте два float
значений, используя ==
или !=
.
Из-за впечатления с плавающей запятой значение типа
10f * 0.1f
может оказаться 1.000000001
или 0.99999999
, хотя логически вы ожидаете именно 1
. Так что ваше условие, вероятно, никогда не будет ложным!
Обычно вы предпочитаете давать ему определенный диапазон, например,
while(Mathf.Abs(Blendfloat - 1) > certainThreshold)
Unity имеет для этого Mathf.Approximately
while(!Mathf.Approximately(Blendfloat, 1f)
, что в основном соответствует пороговому значению Mathf.Epsilon
which(Math.Abs(Blendfloat - 1) > Mathf.Epsilon)
Обратите внимание, что в любом случае то, что у вас есть прямо сейчас, будет выполнять все l oop в одном кадре .
Если вы действительно хотите, чтобы он исчезал со временем, вам нужно сделать один итерация на кадр, например, в Coroutine!