Unity3d从多个脚本

时间:2016-03-26 18:58:43

标签: c# unity3d lua callback corona

我在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()函数中指定变量的类型。所以我必须为func1func2指定类名。但是,如果我想能够从多个脚本调用它并传递不同的回调函数?然后我无法将类指定为类型。

我找到了很少的教程,但没有一个能解决我的问题。它们都描述了如何在一个类中或仅从预定义的类

中完成它

1 个答案:

答案 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);