using UnityEngine; using UnityEngine.UI; public class Alignment : MonoBehaviour { private GridLayoutGroup _gridLayoutGroup; private RectTransform _rectTransform; void Start() { _gridLayoutGroup = GetComponent(); _rectTransform = GetComponent(); } void Update() { // 아바타가 하나도 없으면 계산할 필요 없음 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; // 3. 꽉 차기 직전(80% 이상)이면 셀 사이즈를 10%씩 축소 if (current / max >= 0.8f) { _gridLayoutGroup.cellSize = new Vector2( _gridLayoutGroup.cellSize.x * 0.9f, _gridLayoutGroup.cellSize.y * 0.9f ); } } }