Unityeditor 事件(2)

来源:互联网 发布:鬼武者 知乎 编辑:程序博客网 时间:2024/06/08 03:44

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);//基类名字        }    }}
0 0
原创粉丝点击