Ejemplo n.º 1
0
    private GameObject AddCorner(Corners corner)
    {
        GameObject go = new GameObject("Corner " + corner.ToString());

        Image img = go.AddComponent <Image>();

        img.color = _cornerColor;
        if (_cornerSprite != null)
        {
            img.sprite = _cornerSprite;
        }

        ResizableUICorner resizableUICorner = go.AddComponent <ResizableUICorner>();

        resizableUICorner.ResizableUIComponent = this;
        resizableUICorner.DraggableID          = corner;

        RectTransform imgRect = img.GetComponent <RectTransform>();

        imgRect.pivot = new Vector2(0.5f, 0.5f);
        imgRect.SetParent(transform);

        switch (corner)
        {
        case Corners.TopLeft:
            imgRect.SetAnchorTopLeft(true);
            break;

        case Corners.TopRight:
            imgRect.SetAnchorTopRight(true);
            break;

        case Corners.BottomLeft:
            imgRect.SetAnchorBottomLeft(true);
            break;

        case Corners.BottomRight:
            imgRect.SetAnchorBottomRight(true);
            break;
        }

        imgRect.sizeDelta = new Vector2(_cornerSize, _cornerSize);
        go.SetActive(false);
        return(go);
    }
Ejemplo n.º 2
0
    public void UpdateSize(ResizableUICorner corner, Vector2 change)
    {
        Vector2 offsetMin = _rectTransform.offsetMin;
        Vector2 offsetMax = _rectTransform.offsetMax;

        float newX;
        float newY;

        switch (corner.DraggableID)
        {
        case Corners.TopLeft:
            newX = Mathf.Min(offsetMin.x - change.x, offsetMax.x);
            newY = Mathf.Max(offsetMax.y - change.y, offsetMin.y);
            _rectTransform.offsetMin = Vector2.Lerp(_rectTransform.offsetMin, new Vector2(newX, offsetMin.y), Time.deltaTime * 50f);
            _rectTransform.offsetMax = Vector2.Lerp(_rectTransform.offsetMax, new Vector2(offsetMax.x, newY), Time.deltaTime * 50f);
            break;

        case Corners.TopRight:
            newX = Mathf.Max(offsetMax.x - change.x, offsetMin.x);
            newY = Mathf.Max(offsetMax.y - change.y, offsetMin.y);
            _rectTransform.offsetMax = Vector2.Lerp(_rectTransform.offsetMax, new Vector2(newX, newY), Time.deltaTime * 50f);
            break;

        case Corners.BottomLeft:
            newX = Mathf.Min(offsetMin.x - change.x, offsetMax.x);
            newY = Mathf.Min(offsetMin.y - change.y, offsetMax.y);
            _rectTransform.offsetMin = Vector2.Lerp(_rectTransform.offsetMin, new Vector2(newX, newY), Time.deltaTime * 50f);
            break;

        case Corners.BottomRight:
            newX = Mathf.Max(offsetMax.x - change.x, offsetMin.x);
            newY = Mathf.Min(offsetMin.y - change.y, offsetMax.y);
            _rectTransform.offsetMax = Vector2.Lerp(_rectTransform.offsetMax, new Vector2(newX, offsetMax.y), Time.deltaTime * 50f);
            _rectTransform.offsetMin = Vector2.Lerp(_rectTransform.offsetMin, new Vector2(offsetMin.x, newY), Time.deltaTime * 50f);
            break;
        }
    }