Unity3d,C#传递函数作为参数

Mr.*_*r.D 1 c# parameters delegates unity-game-engine

我有ScriptA很多void功能:

void methodOne() { 
   some code
}

void methodTwo(int a, int b) {
}
Run Code Online (Sandbox Code Playgroud)

我想传递给另一个脚本的静态方法.让我们说scriptB:

ScriptB.staticMethod(methodOne, some, other, primitive, parameters);
ScriptB.staticMethod(methodTwo(a, b), some, other, parameters);
Run Code Online (Sandbox Code Playgroud)

我的脚本的主要思想是ScriptB从服务器获取数据,并ScriptA根据数据调用从我的游戏中进行更改的方法.

Hef*_*Hef 5

我不确定你在这里要做什么.但要回答您的问题,您可以使用委托将方法作为参数传递.这是一个例子:

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);
}
Run Code Online (Sandbox Code Playgroud)

有替代解决方案,您可以查看System.Func和System.Action.