본문 바로가기

TIL(Today I Learned)/오늘 무엇을 배웠을까

TIL(Today I Learned) - 52

📌 오늘의 TIL (Today I Learned)


1. UI 구성 및 참조의 중요성

  • UI 구성에서 **인벤토리 슬롯(InventorySlot)**과 **스킬 슬롯(SkillSlot)**의 역할을 명확히 구분:
    • InventorySlot: 인벤토리의 스킬을 관리하며, 클릭 시 해당 스킬 정보를 디테일 UI에 전달.
    • SkillSlot: 스킬 장착 슬롯으로, 장착된 스킬의 정보를 저장하고 실행.
  • 각 UI 요소의 하위 버튼 참조 문제를 해결:
    • Button이 InventorySlot의 하위에 있어 GetComponent<Button>()로 접근할 수 없었음.
    • 이를 해결하기 위해 직접 참조를 [SerializeField]로 연결하여 명시적으로 관리.

2. UIManager 활용

  • UIManager를 활용해 동적으로 UI를 활성화/비활성화:
    • UIManager.Instance.Show("SkillInfoPopupUI")로 비활성화된 UI를 동적으로 활성화.
    • SkillInfoPopupUI는 인벤토리에서 특정 슬롯을 클릭했을 때 활성화되며, 클릭된 스킬 데이터를 표시.

3. SO(ScriptableObject) 데이터 활용

  • 스킬의 상세 정보를 SkillDataSO에서 가져옴:
    • Description, Description2와 같은 정보는 이미 SO에 저장되어 있으므로 하드코딩 없이 가져다 사용.
    • 이를 통해 스킬 디테일 UI에 정확한 정보를 전달.

4. 슬롯 클릭 시 이벤트 흐름

  • InventorySlot 클릭 → OnClickSlot() 호출 → UIManager로 SkillInfoPopupUI 활성화 → SkillDetailUI 설정 및 정보 표시:
    • 버튼 클릭 이벤트를 AddListener()로 동적으로 추가하여 클릭 동작 관리.
    • 하드코딩된 Find를 제거하고, 직관적인 이벤트 흐름으로 변경.

5. 남은 문제 및 해결 방안

  • 슬라이더와 텍스트 동기화:
    • 슬라이더는 현재 스킬 보유량/필요량을 비율로 채우며, 이를 텍스트와 함께 정확히 표현.
  • 버튼 및 하위 오브젝트 관리:
    • 인벤토리 슬롯의 하위 오브젝트(Button 등)를 명확히 참조해 이벤트 관리.

6. 스킬 장착 프로세스

  • SkillDetailUI의 장착 버튼을 통해 스킬 장착 슬롯으로 데이터 전달:
    • 장착 버튼 클릭 → 상단 스킬 슬롯 중 하나를 선택해 장착 → 장착 후 스킬 실행 가능.

7. 반복된 실수

  • 디테일 UI의 설명 필드(Description, Description2)를 SO 데이터와 동기화하지 않음 → 수정 완료.
  • 버튼 및 하위 오브젝트의 참조를 누락 → 직관적인 참조 방식으로 변경.
  • 기존에 구현된 기능을 잊고 새로운 코드로 덮어씀 → 이전 상태를 유지하며 필요한 부분만 수정.

🔑 느낀 점

  • UI와 데이터를 연결하는 작업은 구조를 명확히 정의하고 참조를 관리하는 것이 가장 중요.
  • SO 데이터를 최대한 활용하여 중복 작업을 줄이고, 데이터 중심으로 UI를 업데이트.
  • 반복된 실수(참조 누락, 설명 누락)를 줄이기 위해 변경사항을 수시로 검토하고 기록하는 습관이 필요.

'TIL(Today I Learned) > 오늘 무엇을 배웠을까' 카테고리의 다른 글

TIL(Today I Learned) - 54  (2) 2024.12.05
TIL(Today I Learned) - 53  (0) 2024.12.04
TIL(Today I Learned) - 51  (0) 2024.12.02
TIL(Today I Learned) - 50  (0) 2024.11.29
TIL(Today I Learned) - 49  (0) 2024.11.28