注:以下是C#结合Unity的一个方法,用于展示反射创建类对象与传参
public void OnValueChange(GameObject toggle) {
//界面显示部分
Debug.Log("toggle is:"+toggle.GetComponent<UIToggle>().value);
if (toggle.GetComponent<UIToggle>().value){
toggle.GetComponent<UISprite>().spriteName = "green_bg";
toggle.transform.FindChild("ToggleLabel").GetComponent<UILabel>().text = "ON";
StateNum = 1;
}
else {
toggle.GetComponent<UISprite>().spriteName = "gary_bg";
toggle.transform.FindChild("ToggleLabel").GetComponent<UILabel>().text = "OFF";
StateNum = 0;
}
Vector3 tempv3 = toggle.transform.FindChild("ToggleLabel").transform.position;
toggle.transform.FindChild("ToggleLabel").transform.position = toggle.transform.FindChild("ToggleSprite").transform.position;
toggle.transform.FindChild("ToggleSprite").transform.position = tempv3;
//实现功能部分
string strClass = "VolumeManager";
string callMethodName = toggle.transform.parent.name;
Type t;
object obj;
//传参的类型
Type[] params_type = new Type[1];
params_type[0] = Type.GetType("System.Int32");
//参数里传的值
System.Object[] params_obj = new System.Object[1];
params_obj[0] = StateNum;
//获取类
t = Type.GetType(strClass);
//获取方法(无参)
//System.Reflection.MethodInfo method = t.GetMethod(callMethodName);
//获取方法(有参数)
System.Reflection.MethodInfo method = t.GetMethod(callMethodName,params_type);
//对象初始化
obj = System.Activator.CreateInstance(t);
//调用方法
method.Invoke(obj, params_obj);
}