4 using System.Collections.Generic;
12 private static readonly List<RaycastResult> RaycastResults =
new List<RaycastResult>();
20 public static RaycastResult
Raycast(
this EventSystem eventSystem, PointerEventData pointerEventData, LayerMask[] layerMasks)
22 eventSystem.RaycastAll(pointerEventData, RaycastResults);
23 return PrioritizeRaycastResult(layerMasks);
26 private static RaycastResult PrioritizeRaycastResult(LayerMask[] priority)
30 for (var i = 0; i < RaycastResults.Count; i++)
32 if (RaycastResults[i].gameObject == null) {
continue; }
34 var layerMaskIndex = RaycastResults[i].gameObject.layer.FindLayerListIndex(priority);
35 if (layerMaskIndex == -1) {
continue; }
39 if (maxResult.
RaycastResult.module == null || RaycastResultComparer.Compare(maxResult, result) < 0)