Unity C#似乎无法将Func<>
符号识别为函数委托。那么,如何将函数作为函数参数传递?
我认为Invoke(functionName, 0)
可能会有所帮助。但是我不确定它是否实际上是立即调用该函数,还是等待帧结束。还有另一种方法吗?
答案 0 :(得分:7)
您可以使用Action
来完成
using System;
// ...
public void DoSomething(Action callback)
{
// do something
callback.Invoke();
}
并传递类似
的方法调用private void DoSomethingWhenDone()
{
// do something
}
// ...
DoSomething(DoSomethingWhenDone);
或使用lambda
DoSomething(() =>
{
// do seomthing when done
}
);
您还可以添加参数,例如
public void DoSomething(Action<int, string> callback)
{
// dosomething
callback.Invoke(1, "example");
}
并再次传递类似
的方法private void OnDone(int intValue, string stringValue)
{
// do something with intVaue and stringValue
}
// ...
DoSomething(OnDone);
或lambda
DoSomething((intValue, stringValue) =>
{
// do something with intVaue and stringValue
}
);
或者也可以参见Delegates
,尤其是对于具有动态参数计数和类型的代表,请查看this post