У меня тоже была эта проблема, с почти идентичным кодом.В моем случае я использовал Mathf.Clamp01(a)
, что эквивалентно Mathf.Clamp(a, 0, 1)
.Я действительно не могу объяснить, почему, но кажется, что это можно решить, заменив этот вызов функции на:
if(a > 1.0f)
a = 1.0f;
if(a < 0.0f)
a = 0.0f;
Я думал, что это может быть потому, что Mathf.Clamp01
переводит числа с плавающей точкой в удвоенные значения перед выполнениемсравнение (как видно из декомпиляции библиотеки UnityEngine), но даже когда я делаю это сам в коде, это не воспроизводит эту проблему - так что я немного растерялся относительно причины - но это исправляет.