Пример #1
0
    private RaycastResult RaycastAll(Vector2 ptInScreen)
    {
        Matrix4x4 matWorldClip = uiCamera.projectionMatrix * uiCamera.worldToCameraMatrix;

        if (previousResult != null && previousResult.raycastTarget && graphicContainsPoint(ptInScreen, previousResult, uiCamera, matWorldClip, screenScale, supportCanvasGroupsAndDragging))
        {
            return(createRaycastResult(ptInScreen, previousResult));
        }
        previousResult  = null;
        fallbackElement = null;
        IList <Graphic> graphicsForCanvas = GraphicRegistry.GetGraphicsForCanvas(canvas);
        int             count             = graphicsForCanvas.Count;

        for (int i = 0; i < count; i++)
        {
            Graphic graphic = graphicsForCanvas[i];
            if (graphic.raycastTarget && graphicContainsPoint(ptInScreen, graphic, uiCamera, matWorldClip, screenScale, supportCanvasGroupsAndDragging))
            {
                EmptyGraphic emptyGraphic = graphic as EmptyGraphic;
                if (!(emptyGraphic != null) || !emptyGraphic.lowPriorityTarget)
                {
                    previousResult = graphic;
                    return(createRaycastResult(ptInScreen, graphic));
                }
                fallbackElement = emptyGraphic;
            }
        }
        if (fallbackElement != null)
        {
            return(createRaycastResult(ptInScreen, fallbackElement));
        }
        return(default(RaycastResult));
    }
Пример #2
0
 void OnEnable()
 {
     script = target as EmptyGraphic;
 }