筆記一下來紀念我花了一小時發現他給的"ArgumentException" Error意涵(哭奔)
private Dictionary> m_List = new Dictionary>();
void Start()
{
Init(new string[]{"Item1","Item2"});
}
private void Init(string[] _Names)
{
int _Count = _Names.Length;
for (int i = 1; i < _Count; i++)
{
string _Name = _Names[i];
string _Callback = "On" + _Name;
MethodInfo _MethodInfo = GetType().GetMethod(_Callback, BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(string), typeof(string)}, null);
if (_MethodInfo == null)
{
Debug.LogError("[Skill System] Method " + _Callback + " Is Not Exist!");
continue;
}
var _Method = (Action)Delegate.CreateDelegate(typeof(Action), this, _MethodInfo, false);
m_List.Add(_Name, _Method);
}
}
private void OnItem1(string ItemName, string PlayerID)
{
}
private void OnItem2(string ItemName, string PlayerID)
{
}
作為函式儲存資料的m_List之後會在適當的時機點,呼叫對應key的Method。
但主要會筆記這個項目的原因,是因為不知道為何Unity的Delegate.CreateDelegate只能使用Delegate.CreateDelegate(Type type, object target, MethodInfo method, bool throwOnBindFailure)才不會報錯或是無法使用><!不知道是不是因為我寫法出問題Q___Q!!
以上作筆記之。
網誌管理員已經移除這則留言。
回覆刪除