1.创建一个 BaseCubes 类
using UnityEngine;
using System.Collections.Generic;
public class BaseCubes {
private static List<Cubes> m_list = new List<Cubes>();
private static string eventName = "all";
public static void Resister(Cubes _cubes)
{
m_list.Add(_cubes);
_cubes.AddListen(OnCallBack, eventName);
}
public static void OnCallBack()
{
Debug.Log("YY");
}
}
2.注册一个添加简单监听函数
using UnityEngine;
using System.Collections;
using System;
public class ReflectMessage : MonoBehaviour
{
public void AddListen(Func<Void> handler , string eventName)
{
GEventManager.addDispatcher(this,handler.Method,eventName);
}
}
3.基于BaseCubes的继承类
using UnityEngine;
using System.Collections;
public class Cubes : ReflectMessage {
public void Awake()
{
BaseCubes.Resister(this);
}
}
4.简单事件输出信息
using UnityEngine;
using System.Collections;
using System.Reflection;
public class GEventManager {
public static void addDispatcher(ReflectMessage dispatcher, MemberInfo method, string eventName)
{
Debug.Log(dispatcher.GetType().Name);//继承类名字
Debug.Log(dispatcher.GetHashCode()); //同样类不同hashcode值
if(method.IsStatic) {
Debug.Log(method.DeclaringType.GetHashCode());//同样值
Debug.Log(method.DeclaringType.Name);//基类名字
}
}
}