У меня есть 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
чтобы вносить изменения в мою игру в зависимости от данных.
Я не уверен, чего вы пытаетесь достичь здесь. Но чтобы ответить на ваш вопрос, вы можете передавать методы в качестве параметров с помощью делегатов. Вот пример:
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.
Нужно ли начинать методы, когда вы ставите их в качестве параметров? Или вам нужны значения из этих методов?
В любом случае, вы можете сделать две вещи: попробуйте это или просто передайте имя метода как строку, а в вашем методе проверьте, какое имя было введено, и запустите этот метод в вашем методе.
MethodOneDelegate
являетсяMethodOne
s? Я думал, что мне нужно присвоить значения.MethodOneDelegate
описывает только сигнатуруMethodOne
(принимает два целых числа и возвращает void). Метод, который будет вызыватьсяStaticMethod
, предоставляется в качестве параметра (scriptA.MethodOne).