【发布时间】:2015-12-04 05:14:12
【问题描述】:
我正在尝试统一循环播放精灵的淡入和淡出。我是 Unity 和 C# 的新手。
我当前的代码:
public float minimum = 0.0f;
public float maximum = 1f;
public float duration = 50.0f;
public bool faded = false;
private float startTime;
public SpriteRenderer sprite;
void Start () {
startTime = Time.time;
}
void Update () {
float t = (Time.time - startTime) / duration;
if (faded) {
sprite.color = new Color(1f, 1f, 1f, Mathf.SmoothStep(minimum, maximum, t));
if (t > 1f) {
faded = false;
startTime = Time.time;
}
} else {
sprite.color = new Color(1f, 1f, 1f, Mathf.SmoothStep(maximum, minimum, t));
if (t > 1f) {
faded = true;
startTime = Time.time;
}
}
}
这可行,但太慢了,我希望让淡入更快,淡出比淡入慢一点。有点像心跳的效果。如何为此更新我的代码?
另外,有没有更好的方法呢?我认为Update() 上的NEW 太多会导致内存泄漏。
至于安德鲁给出的,我尝试调试他的代码:
} else {
sprite.color = new Color(1f, 1f, 1f, Mathf.Lerp(sprite.color.a, minimum, step));
print (Mathf.Abs(sprite.color.a - minimum));
print (threshold);
给我看:
2.206551E-20 // Mathf.Abs()?
1.401298E-45 // threshold?
【问题讨论】:
-
@Sayse,我确实尝试将持续时间设置得更低,比如
5f,但没有太大区别,我认为它根本没有任何作用。 -
2.206551E-20 // Mathf.Abs() == 000000000000000000022065511.401298E-45 // threshold == 000000000000000000000000000000000000000000001401298