由于之前的AddComponent(string name)过时了,使用AddComponent(System.Type t)
Type t = Type.GetType(“CustomClassName”);
var asmb = System.Reflection.Assembly.Load(assembly);
Type t = asmb.GetType(assembly + "." + classname);
如果是系统的类的话,比如Button什么的,
系统函数的命名空间分的很细,不好找,所以请用下面这个方式获取名字:
string className = typeof(Button).AssemblyQualifiedName;
gameObject.AddComponent(t);
string className = "Method";//类名
string methodName_1 = "TestStringToMethod_1";//要调用的方法名
string methodName_2 = "TestStringToMethod_2";//要调用的方法名
Type t;
void Start()
{
t = Type.GetType(className);//通过string类型的className获得相同名称的类
var obj = t.Assembly.CreateInstance(className);//创建获取到的类的实例
//没有参数的方法的调用
MethodInfo method_1 = t.GetMethod(methodName_1);//通过string类型的methodName获得同名的方法
method_1.Invoke(obj, null);//调用t类实例obj中的方法"TestStringToMethod_1",第二个参数没有额外字段直接使用null
//有参数的方法的调用
object[] parameters = new object[] { "测试" ,this.gameObject};//所有的参数丢进方法一起运行的字段,可以多个
MethodInfo method_2 = t.GetMethod(methodName_2);
method_2.Invoke(obj, parameters);//调用t类实例obj中的方法"TestStringToMethod_2"
}