Unity3d 如何从多个脚本中进行回调

我在 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 指定类名。但如果我想从多个脚本中调用它并传递不同的回调函数呢?那么我无法将类指定为类型。

我找到了一些教程,但没有一个解决了我的问题。它们都描述了如何在类内或仅从预定义的类中执行操作。

点赞
用户5710651
用户5710651

实际上在 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);
2016-03-26 22:28:29