123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using UnityEngine;
- public static class RectTransformUtils
- {
- public static void SetDefaultScale(this RectTransform trans)
- {
- trans.localScale = Vector3.one;
- }
- public static void SetPivotAndAnchors(this RectTransform trans, Vector2 vec)
- {
- trans.pivot = vec;
- trans.anchorMin = vec;
- trans.anchorMax = vec;
- }
- public static Vector2 GetSize(this RectTransform trans)
- {
- return trans.rect.size;
- }
- public static float GetWidth(this RectTransform trans)
- {
- return trans.rect.width;
- }
- public static float GetHeight(this RectTransform trans)
- {
- return trans.rect.height;
- }
- public static void SetPivotPosition(this RectTransform trans, Vector2 newPos)
- {
- trans.localPosition = new Vector3(newPos.x, newPos.y, trans.localPosition.z);
- }
- public static void SetLeftBottomPosition(this RectTransform trans, Vector2 newPos)
- {
- trans.localPosition = new Vector3(newPos.x + (trans.pivot.x * trans.rect.width), newPos.y + (trans.pivot.y * trans.rect.height), trans.localPosition.z);
- }
- public static void SetLeftTopPosition(this RectTransform trans, Vector2 newPos)
- {
- trans.localPosition = new Vector3(newPos.x + (trans.pivot.x * trans.rect.width), newPos.y - ((1.0f - trans.pivot.y) * trans.rect.height), trans.localPosition.z);
- }
- public static void SetRightBottomPosition(this RectTransform trans, Vector2 newPos)
- {
- trans.localPosition = new Vector3(newPos.x - ((1.0f - trans.pivot.x) * trans.rect.width), newPos.y + (trans.pivot.y * trans.rect.height), trans.localPosition.z);
- }
- public static void SetRightTopPosition(this RectTransform trans, Vector2 newPos)
- {
- trans.localPosition = new Vector3(newPos.x - ((1.0f - trans.pivot.x) * trans.rect.width), newPos.y - ((1.0f - trans.pivot.y) * trans.rect.height), trans.localPosition.z);
- }
- public static void SetSize(this RectTransform trans, Vector2 newSize)
- {
- Vector2 oldSize = trans.rect.size;
- Vector2 deltaSize = newSize - oldSize;
- trans.offsetMin = trans.offsetMin - new Vector2(deltaSize.x * trans.pivot.x, deltaSize.y * trans.pivot.y);
- trans.offsetMax = trans.offsetMax + new Vector2(deltaSize.x * (1.0f - trans.pivot.x), deltaSize.y * (1.0f - trans.pivot.y));
- }
- public static void SetWidth(this RectTransform trans, float newSize)
- {
- SetSize(trans, new Vector2(newSize, trans.rect.size.y));
- }
- public static void SetHeight(this RectTransform trans, float newSize)
- {
- SetSize(trans, new Vector2(trans.rect.size.x, newSize));
- }
- public static Rect GetScreenRect(this RectTransform rectTransform, Canvas canvas)
- {
- Vector3[] corners = new Vector3[4];
- Vector3[] screenCorners = new Vector3[2];
- rectTransform.GetWorldCorners(corners);
- if (canvas.renderMode == RenderMode.ScreenSpaceCamera || canvas.renderMode == RenderMode.WorldSpace)
- {
- screenCorners[0] = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, corners[1]);
- screenCorners[1] = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, corners[3]);
- }
- else
- {
- screenCorners[0] = RectTransformUtility.WorldToScreenPoint(null, corners[1]);
- screenCorners[1] = RectTransformUtility.WorldToScreenPoint(null, corners[3]);
- }
- screenCorners[0].y = Screen.height - screenCorners[0].y;
- screenCorners[1].y = Screen.height - screenCorners[1].y;
- return new Rect(screenCorners[0], screenCorners[1] - screenCorners[0]);
- }
- }
|