如何在参数中传递函数列表? (UnityAction [])

我在调用函数方面有一些问题。

之前,我只需要一个参数,然后编写了这样的函数(我绝对需要这样调用):

public void SetDialogs(Unityaction pFunctionClic){blablabla};
SetDialogs(() => MyClicFunction());

现在,我需要在参数中具有多种功能。因此,我将SetDialogs函数设置如下:

public void SetDialogs(Unityaction[] pFunctionClic){blablabla};

现在,问题是调用函数时我不知道写什么。 显然

SetDialogs(() => [MyClicFunction()]);

不起作用。

能帮我吗?

ly0110 回答:如何在参数中传递函数列表? (UnityAction [])

我以前没有使用过Unity,但是从您正在做的事情来看,您可以像这样传递一个UnityAction数组:

SetDialogs(new UnityAction[] {
    () => MyClickFunction(),() => SomeOtherStuff(),});
,

您可以使用params数组参数。 params参数必须始终是参数列表中的最后一个(或唯一一个)

public void SetDialogs(params UnityAction[] pFunctionClic){ ... };

现在,您可以根据需要传递任意数量的UnityAction参数。

SetDialogs(() => MyClicFunction());
SetDialogs(() => MyClicFunction1(),() => MyClicFunction2());
SetDialogs(() => MyClicFunction1(),() => MyClicFunction2(),() => MyClicFunction3());

在方法内部,您始终会看到一个数组。调用该方法时,您不需要将其传递给数组(C#自动将参数转换为数组);但是,您可以:

var unityActions = new UnityAction[] {
    () => MyClicFunction1(),() => MyClicFunction3()
};
SetDialogs(unityActions);
本文链接:https://www.f2er.com/3131929.html

大家都在问