Unity中使用反射机制调用函数

 更新时间:2021年03月09日 07:19:11   作者:FutureDr  
这篇文章主要为大家详细介绍了Unity中使用反射机制调用函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Unity中使用反射机制调用函数,供大家参考,具体内容如下

我们在进行开发时有时会碰到使用反射机制来处理事件消息,下面就是一种使用反射机制处理消息的方法

示例代码

共有两个脚本,其中一个模拟消息处理类,一个模拟使用类

using System.Reflection;
using UnityEngine;
using UnityEngine.UI;

public class ReflectionTest : MonoBehaviour
{
 public Button bt0;
 public Button bt1;
 public Button bt2;

 void Start()
 {
  bt0.onClick.AddListener(() =>
  {
   Reflection("NoPara");
  });

  bt1.onClick.AddListener(() =>
  {
   Reflection("OnePara", "你好");
  });

  bt2.onClick.AddListener(() =>
  {
   Reflection("TwoPara", "你好", 124);
  });
 }

 void Reflection(string name) 
 {
  string funName = name + "Msg";
  MethodInfo mi = typeof(MsgHandler).GetMethod(funName);
  object[] o = { };
  mi.Invoke(null, o);
 }

 void Reflection(string name, string str)
 {
  string funName = name + "Msg";
  MethodInfo mi = typeof(MsgHandler).GetMethod(funName);
  object[] o = { str };
  mi.Invoke(null, o);
 }
 void Reflection(string name, string str, int n)
 {
  string funName = name + "Msg";
  MethodInfo mi = typeof(MsgHandler).GetMethod(funName);
  object[] o = { str, n };
  mi.Invoke(null, o);
 }

}
using UnityEngine;

public class MsgHandler 
{
 public static void NoParaMsg() 
 {
  Debug.Log("没有参数的反射消息");
 }

 public static void OneParaMsg(string str)
 {
  Debug.Log("一个参数的反射消息,参数是:" + str);
 }

 public static void TwoParaMsg(string str, int n)
 {
  Debug.Log("二个参数的反射消息,参数是:" + str + "和" + n);
 }

}

使用说明及效果

将脚本挂在空物体Reflection上,然后将三个按钮挂到脚本上,运行即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C# 中将数值型数据转换为字节数组的方法

    C# 中将数值型数据转换为字节数组的方法

    C# 中将数值型数据转换为字节数组的方法,需要的朋友可以参考一下
    2013-05-05
  • C#关闭指定名字进程的方法

    C#关闭指定名字进程的方法

    这篇文章主要介绍了C#关闭指定名字进程的方法,涉及C#进程操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • C#中async/await之线程上下文工作原理

    C#中async/await之线程上下文工作原理

    这篇文章主要为大家介绍了C#中async/await之线程上下文工作原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-05-05
  • C# 读写自定义的Config文件的实现方法

    C# 读写自定义的Config文件的实现方法

    本文主要介绍了C# 读写自定义的Config文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C#调用C动态链接库的实现

    C#调用C动态链接库的实现

    动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,本文主要介绍了C#调用C动态链接库的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Unity3D实现飞机大战游戏(2)

    Unity3D实现飞机大战游戏(2)

    这篇文章主要为大家详细介绍了Unity3D实现飞机大战游戏的第二部分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C#使用System.Environment获取电脑的相关属性

    C#使用System.Environment获取电脑的相关属性

    这篇文章主要为大家详细介绍了C#使用System.Environment获取电脑的相关属性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Unity3D Shader实现动态屏幕遮罩

    Unity3D Shader实现动态屏幕遮罩

    这篇文章主要为大家详细介绍了Unity3D Shader实现动态屏幕遮罩效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 使用C#开发ActiveX控件

    使用C#开发ActiveX控件

    activex控件以前也叫做ole控件,它是微软ie支持的一种软件组件或对象,可以将其插入到web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力。通常activex控件都是用c++或vb语言开发,本文介绍另一种方式,使用c#语言开发activex控件。
    2017-02-02
  • C#子线程更新UI控件的方法实例总结

    C#子线程更新UI控件的方法实例总结

    这篇文章主要介绍了C#子线程更新UI控件的方法,在桌面应用程序中控制UI界面有着不错的实用价值,需要的朋友可以参考下
    2014-09-09

最新评论