Unity中使用反射機(jī)制調(diào)用函數(shù)
Unity中使用反射機(jī)制調(diào)用函數(shù),供大家參考,具體內(nèi)容如下
我們在進(jìn)行開發(fā)時有時會碰到使用反射機(jī)制來處理事件消息,下面就是一種使用反射機(jī)制處理消息的方法
示例代碼
共有兩個腳本,其中一個模擬消息處理類,一個模擬使用類
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("沒有參數(shù)的反射消息");
}
public static void OneParaMsg(string str)
{
Debug.Log("一個參數(shù)的反射消息,參數(shù)是:" + str);
}
public static void TwoParaMsg(string str, int n)
{
Debug.Log("二個參數(shù)的反射消息,參數(shù)是:" + str + "和" + n);
}
}
使用說明及效果
將腳本掛在空物體Reflection上,然后將三個按鈕掛到腳本上,運行即可。


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# 中將數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組的方法
C# 中將數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組的方法,需要的朋友可以參考一下2013-05-05
C#調(diào)用C動態(tài)鏈接庫的實現(xiàn)
動態(tài)鏈接庫是不能直接執(zhí)行的,也不能接收消息,它只是一個獨立的文件,本文主要介紹了C#調(diào)用C動態(tài)鏈接庫的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01
Unity3D實現(xiàn)飛機(jī)大戰(zhàn)游戲(2)
這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)飛機(jī)大戰(zhàn)游戲的第二部分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-06-06
C#使用System.Environment獲取電腦的相關(guān)屬性
這篇文章主要為大家詳細(xì)介紹了C#使用System.Environment獲取電腦的相關(guān)屬性,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10
Unity3D Shader實現(xiàn)動態(tài)屏幕遮罩
這篇文章主要為大家詳細(xì)介紹了Unity3D Shader實現(xiàn)動態(tài)屏幕遮罩效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02

