//把事件透下去 private void Pass <T>(PointerEventData data, ExecuteEvents.EventFunction <T> function, EventInterfaceTypes type) where T : IEventSystemHandler { List <RaycastResult> results = new List <RaycastResult>(); EventSystem.current?.RaycastAll(data, results); GameObject current = data.pointerCurrentRaycast.gameObject; for (int i = 0; i < results.Count; i++) { if (current != results[i].gameObject) { Logger.LogInfo("{0} handle click event...", results[i].gameObject); ExecuteEvents.Execute(results[i].gameObject, data, function, type); break; } } }
private static void OnPreExecute(GameObject target, EventInterfaceTypes eventType) { onGlobalUIEvent?.Invoke(target, eventType); var tag = target.tag; var s = string.IsNullOrEmpty(tag) ? UISoundEffect.empty : UISoundEffect.GetSound(tag, target.name); string[] ss = null; switch (eventType) { case EventInterfaceTypes.PointerEnter: ss = s.onPointerEnter; onPointerEnter?.Invoke(target); break; case EventInterfaceTypes.PointerExit: ss = s.onPointerExit; onPointerExit?.Invoke(target); break; case EventInterfaceTypes.PointerDown: ss = s.onPointerDown; onPointerDown?.Invoke(target); break; case EventInterfaceTypes.PointerUp: ss = s.onPointerUp; onPointerUp?.Invoke(target); break; case EventInterfaceTypes.PointerClick: ss = s.onPointerClick; onPointerClick?.Invoke(target); break; case EventInterfaceTypes.BeginDrag: ss = s.onBeginDrag; onBeginDrag?.Invoke(target); break; case EventInterfaceTypes.InitializePotentialDrag: ss = s.onInitializePotentialDrag; onInitializePotentialDrag?.Invoke(target); break; case EventInterfaceTypes.Drag: ss = s.onDrag; onDrag?.Invoke(target); break; case EventInterfaceTypes.EndDrag: ss = s.onEndDrag; onEndDrag?.Invoke(target); break; case EventInterfaceTypes.Drop: ss = s.onDrop; onDrop?.Invoke(target); break; case EventInterfaceTypes.Scroll: ss = s.onScroll; onScroll?.Invoke(target); break; case EventInterfaceTypes.UpdateSelected: ss = s.onUpdateSelected; onUpdateSelected?.Invoke(target); break; case EventInterfaceTypes.Select: ss = s.onSelect; onSelect?.Invoke(target); break; case EventInterfaceTypes.Deselect: ss = s.onDeselect; onDeselect?.Invoke(target); break; case EventInterfaceTypes.Move: ss = s.onMove; onMove?.Invoke(target); break; case EventInterfaceTypes.Submit: ss = s.onSubmit; onSubmit?.Invoke(target); break; case EventInterfaceTypes.Cancel: ss = s.onCancel; onCancel?.Invoke(target); break; case EventInterfaceTypes.Default: default: break; } var a = UISoundEffect.GetSound(ss); if (!string.IsNullOrEmpty(a)) { if (s.type != AudioTypes.Sound) { var c = s.type == AudioTypes.Voice ? instance.m_lastVoice : instance.m_lastMusic; if (!string.IsNullOrEmpty(c)) { if (c == a && !s.@override && AudioManager.IsInPlayListOrLoading(a)) { return; } AudioManager.Stop(c); } if (s.type == AudioTypes.Voice) { instance.m_lastVoice = a; AudioManager.PlayVoice(a); } else { instance.m_lastMusic = a; AudioManager.PlayMusic(a); } } else { AudioManager.PlaySound(a); } } }