注:以下是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);
}