2025-06-04 23:10:11 +09:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace UVC.Extension
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><EFBFBD><DEBC>带 <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static class RectTransformEx
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// <20><>Ŀ<EFBFBD><C4BF> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><F0BCADB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>(anchorMin=[0,0], anchorMax=[1,1]).
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <param name="left"><3E><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="right"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="top"><3E><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <param name="bottom"><3E>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> RectTransform<72><6D> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform panelRect = panel.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// panelRect.SetRectMargin(10f, 10f, 10f, 10f); // <20><><EFBFBD><EFBFBD> 10<31>ȼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
///
|
|
|
|
|
|
/// // UI <20><><EFBFBD>Ҹ<EFBFBD> <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̳ʿ<CCB3> <20><><EFBFBD>ߵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform childRect = childObject.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// childRect.SetRectMargin(5f, 5f, 20f, 5f); // <20><><EFBFBD>ܿ<EFBFBD> <20><> ū <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetRectMargin(this RectTransform trans, float left, float right, float top, float bottom)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.anchorMin = new Vector2(0, 0);
|
|
|
|
|
|
trans.anchorMax = new Vector2(1f, 1f);
|
|
|
|
|
|
trans.offsetMin = new Vector2(left, bottom);
|
|
|
|
|
|
trans.offsetMax = new Vector2(-right, -top);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20>ʺ<EFBFBD><CABA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <param name="width"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʺ<EFBFBD></param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20><>ư<EFBFBD><C6B0> <20>ʺ<EFBFBD><CABA><EFBFBD> 200<30><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform buttonRect = button.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// buttonRect.SetWidth(200f);
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetWidth(this RectTransform trans, float width)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <param name="height"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20>г<EFBFBD><D0B3><EFBFBD> <20><><EFBFBD≯<EFBFBD> 150<35><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform panelRect = panel.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// panelRect.SetHeight(150f);
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetHeight(this RectTransform trans, float height)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> ũ<>⸦ <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <param name="size"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9> (<28>ʺ<EFBFBD>, <20><><EFBFBD><EFBFBD>)</param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> ũ<>⸦ 100x100<30><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform imageRect = image.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// imageRect.SetSize(new Vector2(100f, 100f));
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetSize(this RectTransform trans, Vector2 size)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.SetWidth(size.x);
|
|
|
|
|
|
trans.SetHeight(size.y);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20><>Ŀ<EFBFBD><C4BF> <20>߾ӿ<DFBE> <20><>ġ<EFBFBD><C4A1>Ű<EFBFBD><C5B0> <20>ǹ<EFBFBD><C7B9><EFBFBD> <20>߾<EFBFBD><DFBE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20><>ư<EFBFBD><C6B0> ȭ<><C8AD> <20>߾ӿ<DFBE> <20><>ġ<EFBFBD><C4A1>Ű<EFBFBD><C5B0>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform buttonRect = button.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// buttonRect.SetAnchorsToCenter();
|
|
|
|
|
|
/// buttonRect.anchoredPosition = Vector2.zero; // <20>߾<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><>ġ
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetAnchorsToCenter(this RectTransform trans)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.anchorMin = new Vector2(0.5f, 0.5f);
|
|
|
|
|
|
trans.anchorMax = new Vector2(0.5f, 0.5f);
|
|
|
|
|
|
trans.pivot = new Vector2(0.5f, 0.5f);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20><>Ŀ<EFBFBD><C4BF> <20>ǹ<EFBFBD><C7B9><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // UI <20><><EFBFBD>Ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ܿ<EFBFBD> <20><>ġ<EFBFBD><C4A1>Ű<EFBFBD><C5B0>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform elementRect = element.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// elementRect.SetAnchorsToTopLeft();
|
|
|
|
|
|
/// elementRect.anchoredPosition = new Vector2(10f, -10f); // <20>ణ<EFBFBD><E0B0A3> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetAnchorsToTopLeft(this RectTransform trans)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.anchorMin = new Vector2(0f, 1f);
|
|
|
|
|
|
trans.anchorMax = new Vector2(0f, 1f);
|
|
|
|
|
|
trans.pivot = new Vector2(0f, 1f);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>(<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>).
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20><><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> <20>г<EFBFBD> <20><>ü<EFBFBD><C3BC> ä<><C3A4><EFBFBD><EFBFBD>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform backgroundRect = backgroundImage.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// backgroundRect.StretchToParentEdges();
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void StretchToParentEdges(this RectTransform trans)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.SetRectMargin(0f, 0f, 0f, 0f);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20><>ġ<EFBFBD><C4A1> <20>θ<EFBFBD> RectTransform <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ(0~1)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <param name="normalizedPosition"><3E><><EFBFBD><EFBFBD>ȭ<EFBFBD><C8AD> <20><>ġ (0,0=<3D><><EFBFBD><EFBFBD> <20>ϴ<EFBFBD>, 1,1=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)</param>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // <20><><EFBFBD>Ҹ<EFBFBD> <20>θ<EFBFBD><CEB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ܿ<EFBFBD> <20><>ġ
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform elementRect = element.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// elementRect.SetNormalizedPosition(new Vector2(0.95f, 0.95f));
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static void SetNormalizedPosition(this RectTransform trans, Vector2 normalizedPosition)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (trans.parent is RectTransform parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
trans.anchorMin = trans.anchorMax = new Vector2(0, 0);
|
|
|
|
|
|
trans.pivot = new Vector2(0.5f, 0.5f);
|
|
|
|
|
|
|
|
|
|
|
|
Rect parentRect = parent.rect;
|
|
|
|
|
|
float x = parentRect.x + parentRect.width * normalizedPosition.x;
|
|
|
|
|
|
float y = parentRect.y + parentRect.height * normalizedPosition.y;
|
|
|
|
|
|
|
|
|
|
|
|
trans.anchoredPosition = new Vector2(x, y);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// RectTransform<72><6D> <20>簢<EFBFBD><E7B0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ǥ<EFBFBD><C7A5> <20><>ȯ<EFBFBD>մϴ<D5B4>.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="trans"><3E><><EFBFBD><EFBFBD> RectTransform</param>
|
|
|
|
|
|
/// <returns><3E><><EFBFBD><EFBFBD> <20><>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD> <20>簢<EFBFBD><E7B0A2> <20><><EFBFBD><EFBFBD></returns>
|
|
|
|
|
|
/// <example>
|
|
|
|
|
|
/// <code>
|
|
|
|
|
|
/// // UI <20><><EFBFBD>Ұ<EFBFBD> Ư<><C6AF> <20><><EFBFBD><EFBFBD> <20><>ǥ<EFBFBD><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD> Ȯ<><C8AE>
|
2025-06-10 01:09:36 +09:00
|
|
|
|
/// RectTransform elementRect = element.GetComponent<RectTransform>();
|
2025-06-04 23:10:11 +09:00
|
|
|
|
/// Rect worldRect = elementRect.GetWorldRect();
|
|
|
|
|
|
/// Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
|
|
|
|
|
/// bool isOverUI = worldRect.Contains(new Vector2(worldPos.x, worldPos.y));
|
|
|
|
|
|
/// </code>
|
|
|
|
|
|
/// </example>
|
|
|
|
|
|
public static Rect GetWorldRect(this RectTransform trans)
|
|
|
|
|
|
{
|
|
|
|
|
|
Vector3[] corners = new Vector3[4];
|
|
|
|
|
|
trans.GetWorldCorners(corners);
|
|
|
|
|
|
Vector2 min = corners[0];
|
|
|
|
|
|
Vector2 max = corners[2];
|
|
|
|
|
|
return new Rect(min, max - min);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|