unity 获取差值完成时候回调
时间: 2023-09-03 10:07:28 浏览: 43
Unity中可以使用Coroutine来实现差值完成时的回调。具体步骤如下:
1. 定义一个IEnumerator类型的方法,用于实现差值的过程。
2. 在该方法中使用while循环,计算差值的当前状态,并根据计算结果更新差值对象的状态。
3. 在差值完成时,使用yield return null;暂停协程,并在该语句后面调用回调函数。
4. 在调用差值函数时,使用StartCoroutine()方法启动协程。
以下是一个示例代码,用于在差值完成时调用回调函数:
```csharp
public class TweenValue : MonoBehaviour
{
public float startValue;
public float endValue;
public float duration;
public Action<float> onValueChanged;
private IEnumerator Tween()
{
float elapsedTime = 0f;
while (elapsedTime < duration)
{
float t = elapsedTime / duration;
float value = Mathf.Lerp(startValue, endValue, t);
onValueChanged?.Invoke(value);
elapsedTime += Time.deltaTime;
yield return null;
}
onValueChanged?.Invoke(endValue);
}
public void StartTween()
{
StartCoroutine(Tween());
}
}
```
在以上示例代码中,TweenValue类实现了一个简单的差值器。在StartTween()方法中,使用StartCoroutine()方法启动差值协程。当差值完成时,调用onValueChanged回调函数。