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); }
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; } }