Unity3d,C#传递函数作为参数
Unity3d, C# pass function as parameter
我 ScriptA
有很多 void
功能:
void methodOne() {
some code
}
void methodTwo(int a, int b) {
}
我想传递给另一个脚本的静态方法。让我们说 scriptB
:
ScriptB.staticMethod(methodOne, some, other, primitive, parameters);
ScriptB.staticMethod(methodTwo(a, b), some, other, parameters);
我的脚本的主要思想是 ScriptB
将从服务器获取数据并调用从 ScriptA
获取的方法以根据数据对我的游戏进行更改。
当你将它们作为参数时,你需要启动这些方法吗?或者您需要这些方法的值吗?
无论哪种方式,您都可以做两件事,try this 或仅将方法名称作为字符串传递,然后在您的方法中检查输入的名称并在您的方法中启动该方法。
我不确定你想在这里实现什么。
但是要回答您的问题,您可以使用委托将方法作为参数传递。这是一个例子:
public class ScriptA
{
public delegate void MethodOneDelegate(int a, int b);
public void MethodOne(int a, int b)
{
Console.WriteLine(a + b);
}
}
public static class ScriptB
{
public static void StaticMethod(ScriptA.MethodOneDelegate function, int a, int b)
{
function(a, b);
}
}
public static void Main()
{
ScriptA scriptA = new ScriptA();
ScriptB.StaticMethod(scriptA.MethodOne, 1, 2);
}
有替代方案,你可以看看System.Func和System.Action。
我 ScriptA
有很多 void
功能:
void methodOne() {
some code
}
void methodTwo(int a, int b) {
}
我想传递给另一个脚本的静态方法。让我们说 scriptB
:
ScriptB.staticMethod(methodOne, some, other, primitive, parameters);
ScriptB.staticMethod(methodTwo(a, b), some, other, parameters);
我的脚本的主要思想是 ScriptB
将从服务器获取数据并调用从 ScriptA
获取的方法以根据数据对我的游戏进行更改。
当你将它们作为参数时,你需要启动这些方法吗?或者您需要这些方法的值吗?
无论哪种方式,您都可以做两件事,try this 或仅将方法名称作为字符串传递,然后在您的方法中检查输入的名称并在您的方法中启动该方法。
我不确定你想在这里实现什么。 但是要回答您的问题,您可以使用委托将方法作为参数传递。这是一个例子:
public class ScriptA
{
public delegate void MethodOneDelegate(int a, int b);
public void MethodOne(int a, int b)
{
Console.WriteLine(a + b);
}
}
public static class ScriptB
{
public static void StaticMethod(ScriptA.MethodOneDelegate function, int a, int b)
{
function(a, b);
}
}
public static void Main()
{
ScriptA scriptA = new ScriptA();
ScriptB.StaticMethod(scriptA.MethodOne, 1, 2);
}
有替代方案,你可以看看System.Func和System.Action。