Unity 2D 아이템 제작 - Enum 기반 드롭 다운 및 스크롤 리스트 생성

2025. 7. 21. 14:20·유니티 개발/사이드 뷰 게임

이번 글에서는 enum 기반 드롭 다운 및 스크롤 리스트 생성 한것을 정리 해보겠습니다.

 

먼저 드롭 다운 및 스크롤 뷰 그리고 스크롤 뷰 안에 들어가는 오브젝트를 생성 합니다.

 

 

 

ItemType과 Condition 같은 enum 데이터를 기반으로 드롭다운 UI를 자동 생성하는 기능을 구현했습니다.

enum 값이 바뀌거나 수정이 되더라도 옵션이 자동으로 갱신하도록 만들었습니다.

먼저 Enum.GetValues(Typeof(타입)) 을 이용하여 값을 배열로 반환합니다.

이것을 리스트에 추가 및 저장 할수있게 했습니다.

private void DropDownData()
{
    itemTypeList.Clear();

    //Enum.GetValues(typeof(ItemType)) ->enum 타입의 정의된 모든 값을 배열로 반환하는 함수
    foreach (ItemTpyes type in Enum.GetValues(typeof(ItemTpyes)))
    {
        itemTypeList.Add(type);
    }

    ConditionList.Clear();

    foreach (Condition condition in Enum.GetValues(typeof(Condition)))
    {
        ConditionList.Add(condition);
    }

}

 

 

이제 저장된 리스트 값을 .options.Add()를 이용하여 하나씩 추가

TMP_Dropdown.OptionData()로 각 드롭다운 항목을 생성

.value값을 0으로 하면 첫번째 항목이 선택이 됩니다.

private void ItemTpyeDropDown()
{
    int dropCount = 0;
    foreach (ItemTpyes type in itemTypeList)
    {
        string dropDownStr = $"{type}";
        itemTypeDropDown.options.Add(new TMP_Dropdown.OptionData(dropDownStr));
        dropCount++;
    }

    itemTypeDropDown.value = 0; 
    itemTypeDropDown.RefreshShownValue();
}

 

스크롤 리스트는 아이템 이미지 미리보기 처럼 특정 오브젝트를 생성한후 스크롤 뷰 안에 넣는 방식입니다.

하지만 아이템 정보를 보면

    [System.Serializable]
    public class ItemDatas
    {
        public ItemEffect effectType;  
        public float value;             
    }

이렇게 내가 원하는것을 생성 후 아이템에 등록하는 방식 입니다.

 

foreach (Transform child in ScrollObj.transform)
{
    Destroy(child.gameObject);
}

일단 먼저 기존에 있는 슬롯을 제거 합니다.

 

ItemEffect[] values = (ItemEffect[])System.Enum.GetValues(typeof(ItemEffect));
List<ItemEffect> validEffects = new List<ItemEffect>();

foreach (var effect in values)
{
    if (effect != ItemEffect.None) 
        validEffects.Add(effect);
}

기존에 값이 삭제가 되면 이제  Enum 값 가져옵니다.

 

for (int count = 0; count < validEffects.Count; count++) 
{
    GameObject IEC = Instantiate(EffectSlotP, ScrollObj.transform);
    ItemEffect selected = validEffects[count];
    IEC.GetComponentInChildren<CreateItemSlotEffect>().settingSlotEffect(selected);
    createEffectObj.Add(IEC); 
}

이제 값을 가져오면 슬롯 동적 생성을 합니다.

이렇게 만들고나서 슬롯 안에 들어가는 오브젝트에 ItemEffect를 받으면 최종적으로 슬롯에 추가가됩니다.

'유니티 개발 > 사이드 뷰 게임' 카테고리의 다른 글

Unity 2D - 사운드 조절 기능 추가  (3) 2025.08.02
Unity 2D 아이템 제작 - 저장  (0) 2025.07.21
Unity 2D 아이템 제작 -이미지 미리보기  (0) 2025.07.20
Unity 2D 아이템 제작 - 기본 베이스  (0) 2025.07.20
Unity 2D 보스 - 특수 공격  (0) 2025.07.20
'유니티 개발/사이드 뷰 게임' 카테고리의 다른 글
  • Unity 2D - 사운드 조절 기능 추가
  • Unity 2D 아이템 제작 - 저장
  • Unity 2D 아이템 제작 -이미지 미리보기
  • Unity 2D 아이템 제작 - 기본 베이스
dove-dove
dove-dove
dove-dove 님의 블로그 입니다.
  • dove-dove
    dove-dove 님의 블로그
    dove-dove
  • 전체
    오늘
    어제
    • 분류 전체보기 (38)
      • 유니티 개발 (38)
        • 팀 포트폴리오 - 슈퍼 마리오 (7)
        • 사이드 뷰 게임 (22)
        • 계륵 (8)
        • 깃 주소 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dove-dove
Unity 2D 아이템 제작 - Enum 기반 드롭 다운 및 스크롤 리스트 생성
상단으로

티스토리툴바