13

I'm trying to call a method using a string, but there a problem:

void make_moviment(string mov,Vector3 new_mov){
    GameObject past_panel = GameObject.Find(actual_level.ToString());
    Type t = Type.GetType(past_panel.GetComponents<MonoBehaviour>()[0].GetType ().Name);
    MethodInfo method = t.GetMethod("get_answer");
    method.Invoke(t,new object[] { mov }));   <--- PROBLEM HERE
}

There's always this error "Object does not match target type" related with the last line. Do you have any recommendations?

Bernardo Bacalhau
  • 155
  • 1
  • 1
  • 8

1 Answers1

24
method.Invoke(t,new object[] { mov }));

Is the same as calling

t.WhateverTheMethodIs(mov);

But t is the Type, not the object of that type. You need to pass in the object to call the method on there instead. (Or null if the method is static).

Jon Hanna
  • 110,372
  • 10
  • 146
  • 251