Today I Learn

25/05/15 | TIL UI 팁 및 문제 해결 정리

오늘도즐겨 2025. 5. 15. 21:34

 

 1. 데이터에 따라 이미지 유무에 따른 UI 처리

if (data.hasImage)
{
    imageObj.gameObject.SetActive(true);
    imageObj.sprite = data.sprite;
}
else
{
    imageObj.gameObject.SetActive(false);
}
 
 
 

BG, Image, Text 오브젝트가 데이터에 따라 유동적으로 반영될 수 있도록 조건 분기.


2. 동적 리스트 정렬 기능 구현

스킬 목록을 이름순 / 레벨순 정렬할 수 있도록 버튼에 따라 정렬 함수 적용:

skillList = skillList.OrderBy(x => x.name).ToList(); // 이름순
skillList = skillList.OrderByDescending(x => x.level).ToList(); // 레벨순

🔧 오늘 해결한 문제

 

스크롤뷰 내 오브젝트 정렬

미보유 → 보유 스킬 변화 시 정렬 문제

스킬 획득 시 리스트 상단으로 자동 정렬 필요.

 

 해결 방법

→ 동적 정렬을 위해 List.Sort() 사용 후 LayoutGroup의 SetLayoutHorizontal / SetLayoutVertical 호출 또는 LayoutRebuilder.ForceRebuildLayoutImmediate()로 강제 갱신.


  UI 팝업 중복 방지 및 팝업 상태 확인

팝업이 열려있는 동안 다른 팝업이 열리지 않도록 하기

 

 해결 방법

if (Global.Popup.IsOpenedPopup()) return;

Global.Popup.IsOpenedPopup() 로 현재 팝업이 열려있는지 여부 확인 가능.

팝업 닫힌 후 처리도 PopupSystem.SetEvent() 메서드로 콜백 등록 가능.

팝업이 하나라도 열려있으면 OpenPopup()이 동작하지 않도록 조건 검사 필요.