/// <summary> /// 在一个对象身上通过字符串调用公开的方法 /// 形如下列的成员方法可用本函数执行反射调用 /// public int TestFunc( int a ,int b ){return a+b;} /// </summary> /// <param name="FunctionName">方法名</param> /// <param name="Target">目标对象</param> /// <param name="Param">参数列表</param> /// <returns>函数的返回值</returns> public static object CallFunction(string FunctionName, object Target, params object[] Param) { CAssert.AssertIfNull(FunctionName); CAssert.AssertIfNull(Target); // 定义泛型类型 MethodInfo func = Target.GetType().GetMethod(FunctionName); CAssert.AssertIfNull(func); return(func.Invoke(Target, Param)); }
/// <summary> /// 在一个类型里通过字符串调用一个公开的静态方法 /// 形如下列的成员方法可用本函数执行反射调用 /// public static int TestFunc( int a ,int b ){return a+b;} /// </summary> /// <param name="FunctionName">方法名</param> /// <param name="TargetClass">目标类型</param> /// <param name="Param">参数列表</param> /// <returns>函数的返回值</returns> public static object CallStaticFunction(string FunctionName, Type TargetClass, params object[] Param) { CAssert.AssertIfNull(FunctionName); CAssert.AssertIfNull(TargetClass); // 定义泛型类型 MethodInfo func = TargetClass.GetMethod(FunctionName); CAssert.AssertIfNull(func); return(func.Invoke(null, Param)); }
/// <summary> /// 在一个对象身上通过字符串调用公开的泛型数组方法 /// 形如下列的成员方法可用本函数执行反射调用 /// public T TestFunc<T>( T[] a ,T[] b ){return a+b;} 省略个warning</T> /// </summary> /// <param name="FunctionName">方法名称</param> /// <param name="Target">调用目标</param> /// <param name="GenericType">泛型数组类型</param> /// <param name="Param">参数列表</param> /// <returns>方法的返回值</returns> public static object CallGenericArrayFunction(string FunctionName, object Target, Type[] GenericType, params object[] Param) { CAssert.AssertIfNull(FunctionName); CAssert.AssertIfNull(Target); CAssert.AssertIfNull(GenericType); // 定义泛型类型 MethodInfo func = Target.GetType().GetMethod(FunctionName); CAssert.AssertIfNull(func); func = func.MakeGenericMethod(GenericType); return(func.Invoke(Target, Param)); }
/// <summary> /// 显示一个加载场景来加载场景 /// 等加载完毕后切换到目标场景 /// </summary> /// <param name="TargetScene">目标场景</param> /// <param name="LoadingClass">加载界面类</param> /// <param name="Callback">加载完毕的回调</param> public void ChangeScene(string SceneName, Type LoadingClass, DelegateSceneLoaded Callback = null) { //记录回调 CompleteCallback = Callback; //加载并显示场景加载UI if (LoadingClass != null) { MethodInfo func = LoadingClass.GetMethod("CreateUI"); CAssert.AssertIfNull(func); func.Invoke(null, null); } //开始加载 StartCoroutine(LoadScene(SceneName, LoadingClass == null)); }