【发布时间】:2020-11-13 08:38:34
【问题描述】:
大家好,我正在尝试更多地了解 C# 中的 Action Delegates,但我不太了解它。所以下面我有一个来自 Unity C# 项目的代码示例。我的问题是。这个“Action doneCallback”参数的目的是什么,以及“doneCallback.Invoke()”代码的作用是什么。提前致谢!
public static IEnumerator StartWaiting(
float time, Action doneCallback,
float increment, Action<float> incrementCallback,
bool countUp = true)
{
float timeElapsed = 0f;
float timeRemaining = time;
while (timeRemaining > 0f)
{
yield return new WaitForSeconds(increment);
timeRemaining -= increment;
timeElapsed += increment;
incrementCallback.Invoke(countUp ? timeElapsed : timeRemaining);
}
doneCallback.Invoke();
}
public static IEnumerator StartWaiting(float time,
Action doneCallback)
{
yield return new WaitForSeconds(time);
doneCallback.Invoke();
}
}
【问题讨论】:
-
您可以将它们视为指向方法的“指针”。 Invoke 执行该方法。 dotnetpattern.com/csharp-action-delegate 所以基本上在您的代码中,您可以将任何具有浮点参数的方法(例如
private void CoolMethod(float bla))传递给 incremenentCallback 参数。
标签: c# unity3d delegates ienumerator