Я делаю проект в движке Unity и имею 3 функции в классе C#, которые структурированы следующим образом:
public Vector3 FunctionOne(Vector3 point)
{
// do some vector operations and return it as var a
return a;
}
public Vector3 Sample(System.Func<Vector3, Vector3> funcOne, Vector3 samplePoint)
{
// sample the resulting vector field from funcOne and return as var b
return b;
}
public Vector3 Trace(Vector3 point)
{
// Even more vector operations, as follows
Vector3 k1 = Sample(FunctionOne(point), point);
// (...)
return k1;
}
В основном мне нужна функция Trace()
для вызова Функция Sample()
для некоторой переменной, но также требуется, чтобы функция Sample()
принимала различные функции в качестве переменной, например, FunctionOne()
. Я получаю следующую ошибку внутри Trace()
, когда делаю это, как указано выше:
Argument 1: cannot convert from 'UnityEngine.Vector3' to 'System.Func<UnityEngine.Vector3, UnityEngine.Vector3>'
Как бы я справился с этим правильно? Насколько я вижу, функция Sample()
принимает и возвращает Vector3, я также указываю, какую функцию он должен принимать, так почему же это не работает? Нужно ли также передавать FunctionOne()
в Trace()
, даже если он находится в одном классе?
Я пропустил большую часть функций, поскольку на самом деле это просто векторные операции и они не имеют отношения к вопрос.