Ejemplo n.º 1
0
 /// <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);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
        public void AddTriggerByElement(GameObject _target, UnityEngine.Object _method, BundleEventTriggerType _triggerType)
        {
            BundleEventTriggerInfo temp = new BundleEventTriggerInfo(_target, _method, _triggerType);

            if (temp != null)
            {
                selfBundleEventTriggerInfo.Add(temp);
            }
        }