버그 수정 중. 이동 후 남겨지는 경우가 있음

This commit is contained in:
logonkhi
2025-10-31 19:55:14 +09:00
parent 09a620ff71
commit 02ed8a01a0
10 changed files with 1079 additions and 1345 deletions

View File

@@ -12,7 +12,7 @@ namespace Gpm.Ui
/// <b>UI 계층 구조 예시:</b>
/// <code>
/// - Background (RectTransform)
/// - Content (RectTransform, VerticalLayoutGroup, ContentSizeFitter, ContentSizeSetter)
/// - Content (RectTransform, VerticalLayoutGroup, ContentSizeFitter, ContentSizeSetter)
/// - Item1 (Image)
/// - Item2 (Image)
/// - ...
@@ -45,16 +45,28 @@ namespace Gpm.Ui
}
}
[Tooltip("넓이에 크기 조절 적용")]
[SerializeField]
public bool EnableWidth = true;
[Tooltip("높이에 크기 조절 적용")]
[SerializeField]
public bool EnableHeight = true;
/// <summary>
/// 크기를 조절할 때 추가할 여백(margin)입니다.
/// x, y 값을 설정하여 target의 너비와 높이에 각각 추가적인 공간을 줄 수 있습니다.
/// </summary>
[Tooltip("크기를 조절할 때 추가할 여백(margin)입니다.")]
[SerializeField]
public Vector2 margin;
/// <summary>
/// 이 컴포넌트의 크기에 맞춰 함께 크기가 조절될 RectTransform(들)의 배열입니다.
/// 인스펙터 창에서 크기를 동기화할 UI 요소들을 여기에 할당합니다.
/// </summary>
[Tooltip("이 컴포넌트의 크기에 맞춰 함께 크기가 조절될 RectTransform(들)의 배열입니다.")]
[SerializeField]
public RectTransform[] target;
/// <summary>
@@ -76,12 +88,13 @@ namespace Gpm.Ui
// 현재 RectTransform의 크기에 margin 값을 더하여 최종 크기를 계산합니다.
Vector2 sizeDelta = new Vector2(rectTransform.sizeDelta.x + margin.x, rectTransform.sizeDelta.y + margin.y);
if (target != null)
{
// target 배열의 모든 RectTransform에 대해 계산된 크기를 적용합니다.
for (int i = 0; i < target.Length; i++)
{
if (!EnableWidth) sizeDelta.x = target[i].sizeDelta.x;
if (!EnableHeight) sizeDelta.y = target[i].sizeDelta.y;
target[i].sizeDelta = sizeDelta;
// target의 레이아웃을 갱신하도록 표시하여 UI가 올바르게 다시 그려지도록 합니다.
LayoutRebuilder.MarkLayoutForRebuild(target[i]);

View File

@@ -70,7 +70,6 @@ namespace Gpm.Ui
{
return;
}
if (force == true)
{
// 즉시 레이아웃을 강제로 다시 계산합니다.