将参数预先应用于unityscript函数,并将其用作发送到另一个函数的对象

时间:2013-06-14 11:33:20

标签: unity3d arguments parameter-passing unityscript

我有一个复杂的功能。我打算在其中发送一个函数。

function ComplexFunction( customFunction : function)
{
    //Complex things
    customFunction();
    //Complex things
}

但我计划发送的功能有不同的签名

function FunctionA ( enumParameter : EnumX )
function FunctionB ( enumParameter : EnumY )
function FunctionC ( enumParameter : EnumZ )

所以这不是一个选项,因为我不知道将发送什么类型。

function ComplexFunction( customFunction : function , enumForCustomFunction : Enum??? )

(这是带有#pragma strict的Unity的unityscript,所以我必须指出参数类型。)

所以我考虑预先应用这些枚举参数,将其设置为无参数函数并将其发送到ComplexFunction进行调用。这可能吗?

1 个答案:

答案 0 :(得分:1)

在纯JavaScript中,您可以将参数绑定到这样的函数:

var multiply = function(x,y) { return x*y };
var doubleIt = multiply.bind(null, 2);

所以现在调用doubleIt(3)会返回6。 (null设置函数的上下文,在这种情况下我们不关心它,所以我们使用null)。您可以在此处详细了解此主题:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind


在您的情况下,我会像ComplexFunction一样致电FunctionA

ComplexFunction(FunctionA.bind(null, AValueFromEnumX));