Files

42 lines
1.4 KiB
C#
Raw Permalink Normal View History

2026-05-01 04:03:39 +09:00
using UnityEngine;
using UnityEngine.UI;
2026-05-01 07:06:29 +09:00
public class Alignment : MonoBehaviour
2026-05-01 04:03:39 +09:00
{
private GridLayoutGroup _gridLayoutGroup;
private RectTransform _rectTransform;
2026-05-01 07:06:29 +09:00
2026-05-01 04:03:39 +09:00
void Start()
{
_gridLayoutGroup = GetComponent<GridLayoutGroup>();
_rectTransform = GetComponent<RectTransform>();
}
void Update()
{
2026-05-01 07:06:29 +09:00
// 아바타가 하나도 없으면 계산할 필요 없음
if (transform.childCount == 0) return;
// 1. 가로, 세로에 각각 '온전히' 몇 개가 들어갈 수 있는지 계산 (내림 처리)
// (괄호 위치를 정확히 맞추었습니다!)
float cols = Mathf.Floor(_rectTransform.rect.width / (_gridLayoutGroup.cellSize.x + _gridLayoutGroup.spacing.x));
float rows = Mathf.Floor(_rectTransform.rect.height / (_gridLayoutGroup.cellSize.y + _gridLayoutGroup.spacing.y));
// 최소 1줄은 보장되도록 안전장치
if (cols < 1) cols = 1;
if (rows < 1) rows = 1;
// 2. 현재 화면에 들어갈 수 있는 최대 아바타 개수
float max = cols * rows;
float current = transform.childCount;
2026-05-01 04:03:39 +09:00
2026-05-01 07:06:29 +09:00
// 3. 꽉 차기 직전(80% 이상)이면 셀 사이즈를 10%씩 축소
2026-05-01 04:03:39 +09:00
if (current / max >= 0.8f)
{
2026-05-01 07:06:29 +09:00
_gridLayoutGroup.cellSize = new Vector2(
_gridLayoutGroup.cellSize.x * 0.9f,
_gridLayoutGroup.cellSize.y * 0.9f
);
2026-05-01 04:03:39 +09:00
}
}
2026-05-01 07:06:29 +09:00
}