📌 오늘의 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 |