我在Unity的C#脚本中遇到回调函数的问题。
在Corona SDK中,如果要执行回调,只需将其作为参数传递,然后在适当的位置调用它。
local function boom()
print("booom!!!")
end
local function bang()
print("baaaang!!!")
end
local function selector(var, func1, func2)
if var > 0 then
func1()
else
func2()
end
end
selector(5, boom, bang)
selector(-12, boom, bang)
我得到了:
booom!!!
baaaang!!!
哪个是正确的。
但是当我尝试在Unity的C#脚本中实现它时,我遇到了很多问题。首先,传递一个参数是不够的。您需要在selector()
函数中指定变量的类型。所以我必须为func1
和func2
指定类名。但是,如果我想能够从多个脚本调用它并传递不同的回调函数?然后我无法将类指定为类型。
我找到了很少的教程,但没有一个能解决我的问题。它们都描述了如何在一个类中或仅从预定义的类
中完成它答案 0 :(得分:0)
实际上它在C#中的工作方式非常相似,除了你必须明确表示类型这一事实:
void boom()
{
Debug.Log("booom");
}
void bang()
{
Debug.Log("baaaang");
}
void selector(int v, Action func1, Action func2)
{
if (v > 0)
func1();
else
func2();
}
...
selector(5, boom, bang);
selector(-12, boom, bang);