[내일배움캠프 TIL] 28. 아이템과 인벤토리
2023. 10. 24. 21:45ㆍ내일배움캠프 Unity
[최종프로젝트 1]
오늘부터 내일배움캠프 최종프로젝트에 들어간다.
팀원들과의 회의로 패링을 주로 사용하는 2D 소울라이크 게임을 만들기로 했고 그 중 나는 아이템과 인벤토리에 관련 된 부분을 전담하게 되었다.
아이템 기능을 원활하게 테스트 하기 위해 인벤토리가 필요할 것이라 생각했기에 오늘 작업은
1. 인벤토리 창 제작
2. 인벤토리 슬롯 자동 배치 및 활성화 기능
3. 스크립터블 오브젝트를 사용한 아이템 데이터베이스 관리
4. 필드 아이템(드랍된 아이템) 획득 및 인벤토리에 적용
5. 인벤토리의 아이템 사용
순서로 진행했으며 마지막으로 겪었던 어려움과 버그 픽스에 대해 기록 할 것이다.
1. 인벤토리 창 제작
- ScrollView를 이용해 인벤토리 창과 슬롯을 만들었다.
- 키보드 I 키를 눌러 인벤토리를 쉽게 켜고 끌 수 있게 만들었다.
2. 인벤토리 슬롯 자동 배치 및 활성화 기능
- Grid LayOut Group과 Content Size Filter를 연계해 인벤토리의 슬롯을 정렬시키고 슬롯 개수에 따라 인벤토리의 스크롤 길이가 유동적으로 변하도록 구현했다.
- 초기에 사용 가능한 슬롯 개수를 제한하고 특정 조건 만족 시 사용 가능한 슬롯이 늘어나도록 구현했다.(현재는 + 버튼 클릭)
3. 스크립터블 오브젝트를 사용한 아이템 데이터베이스 관리
- 스크립터블 오브젝트를 사용해 아이템의 기본적인 데이터 값을 관리하고 해당 데이터 값을 복사해 사용한다.
- Position은 이후 박스 등 파괴 가능한 오브젝트 위치로 설정할 예정
4. 필드 아이템(드랍된 아이템) 획득 및 인벤토리에 적용
- 플레이어가 충돌한 오브젝트의 태그가 FieldItem일 경우 아이템을 사라지게 만들고 해당 아이템을 획득한다.
- 필드 아이템 획득 시 순서대로 인벤토리에 들어가도록 구현
5. 인벤토리의 아이템 사용
- OnPointerUp() 을 사용해 마우스 클릭 후 손을 뗄 때 아이템을 사용하고 인벤토리를 재구성한다.
- Use() 에선 스크립터블 오브젝트와 추상클래스를 사용해 아이템 별 효과를 다르게 구현했다.
- RemoveSlot()과 UpdateSlotUI()는 사용한 아이템을 인벤토리 데이터에서 삭제하고슬롯들이 가진 아이템 정보를 초기화하고 인벤토리 데이터에 있는 아이템들로 다시 배치한다. 결과적으로 사용한 아이템을 제외한 아이템들이 첫 번째 슬롯부터 차례로 배치된다.
6. 버그픽스
- Serializable 클래스가 인스펙터 창에 보이지 않음
- MonoBehavior 상속을 삭제하여 해결
- 아이템 사용 버그
- 간헐적으로 사라진 item에 접근하여 오류 발생
- 아이템을 바로 사용하는 것이 아니라 info 패널을 띄워주는 것으로 해결(아이템 정보, 착용, 사용, 해제 등 선택창)
'내일배움캠프 Unity' 카테고리의 다른 글
[내일배움캠프 TIL] 30. 상점과 NPC (0) | 2023.10.27 |
---|---|
[내일배움캠프 TIL] 29. 드래그 앤 드롭, 스택 가능한 아이템 (1) | 2023.10.27 |
[내일배움캠프 TIL] 27. 자유롭게 게임을 만들어보자 (0) | 2023.10.09 |
[내일배움캠프 TIL] 26. 로그라이크 게임을 만들어보자 (0) | 2023.09.25 |
[내일배움캠프 TIL] 25. 인벤토리 시스템을 강화해보자 (0) | 2023.09.21 |