/// <summary> /// 执行事件 /// </summary> /// <param name="id"></param> /// <param name="eventData"></param> private void Execute(BundleEventTriggerType id, PointerEventData eventData) { for (int i = 0, imax = triggers.Count; i < imax; ++i) { var ent = triggers[i]; if (ent.target != null && ent.triggerType == id && ent.method != null) { Type type = ent.method.GetType(); //获取targer上所有组件 //GetComponents<T>和GetComponents(Type)是获取不到运行时加载出来的组件必须这样获取后处理 Component[] components = ent.target.GetComponents <Component>(); for (int j = 0; j < components.Length; j++) { Type typecomponents = components[j].GetType(); if (typecomponents == type) { //Debug.Log("触发" + ent.triggerType + "事件---->操作对象" + ent.target + "---->执行" + typecomponents); //执行 ((BundleEventInfoBase)components[j]).OnBundleAction(eventData); } } } } }
public void AddTriggerByElement(GameObject _target, UnityEngine.Object _method, BundleEventTriggerType _triggerType) { BundleEventTriggerInfo temp = new BundleEventTriggerInfo(_target, _method, _triggerType); if (temp != null) { selfBundleEventTriggerInfo.Add(temp); } }