我有一个编辑器,它反映了脚本中的方法(及其参数),然后让用户可以查看它们,使最终用户可以轻松地从编辑器中调用方法。
示例方法是:
public void TestMethodOne(damage float1, duration float2, ticks float3){}
public void TestMethodTwo(damage float1, walkSpeed float2){}
在编辑器中看起来像:
TestMethodOne - Damage:[] Duration:[] Ticks:[]
TestMethodTwo - Damage:[] WalkSpeed:[] //with [] being user input window
使用者希望使用的方法名称存储为字符串,参数存储在浮动列表中。
现在我想用存储的变量运行这些方法而不改变它们的参数。
如果你改变它们,下面的作品......:
MethodInfo method = typeof(MethodHolderScript).GetMethod(storedMethodName);
string[] values = floatParameterList.ToArray();
object[] args = { values };
methodName.Invoke(instance, args);
但后来我将所有方法的参数更改为示例:
public void TestMethodOne(object[] args){}
public void TestMethodTwo(object[] args){}
这不是我想要做的。 方法的数量和浮点参数的数量将定期更新,编辑器将根据其参数名称显示方法值,因此上述“修复”不是一个选项。
有没有办法让这项工作,解决方案或者除了反思之外的其他方式来实现这个目标?