public static float ExpoInOut(float from, float to, float time)
{
if ((time /= .5f) < 1f)
return Mathf.Lerp(from, to, .5f * Mathf.Pow(2f, 10f * (time - 1f)));
return Mathf.Lerp(from, to, .5f * (-Mathf.Pow(2f, -10f * --time) + 2f));
}
两种情况的第一步是从时间上减去1。
第二个将该值保存回时间,但由于它不再使用无关紧要? 第一个可以使用 - 时间,或者第二个可以使用(时间 - 1f),结果是一样的吗?
如果不保存,第一种方式甚至可能更好。
感谢。
答案 0 :(得分:2)
在--time
而不是time--
上使用得很好。你是对的--time
vs time - 1f
并不重要(从代码的角度来看)如果你没有保存time
的新值,但从可读性的角度来看,你应该去用更冗长的一个。话虽如此,你应该始终追求可读性(特别是如果性能影响为0或可忽略不计)。您可能会发现执行
public static float ExpoInOut(float from, float to, float time)
{
time /= 0.5f;
time--;
if (time < 0f)
return Mathf.Lerp(from, to, .5f * Mathf.Pow(2f, 10f * time));
return Mathf.Lerp(from, to, .5f * (-Mathf.Pow(2f, -10f * time) + 2f));
}
我的一般经验法则是,如果你在另一个方法的参数传递部分中进行数学/函数,你应该尽可能地最小化它,即使这意味着将其分解为更小的私有方法。