ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8주차 - 인벤토리와 아이템 설명창의 재사용 + 상점
    Unity/Unity 스파르타 2024. 2. 5. 20:33
    728x90

    인벤토리 구현과, 아이템 설명창을 만들어 보자!

     

    1. 인벤토리를 어떻게 구현할 것인가.

    • 일단 아이템을 어떤식으로 관리할 것인가.
      • 스크립터블 오브젝트를 사용해 아이템 데이터를 만들어 놓자.
        • 아이템이 가지고있을 수 있는 스텟 변수 정하기 
        • 상점 또는 새로운 아이템을 얻었을때 새로운 스크립터블 오브젝트를 만들어 줘야 하기 때문에 카피 함수를 만들어 놓자
          • 새로운 아이템이 장비아이템인 경우 인벤토리에 같은 아이템이 있더라도 서로 다른 아이템 취급을 해줘야 함.
          • 같은 아이템이지만 아이템을 강화시키거나, 내구도가 감소했을 경우 두개의 아이템의 능력치가 서로 달라지게됨.
        • 아이템의 능력치를 쉽게 가지고 올 수 있는 방법이 뭐가있을까.
          • 아이템의 능력치를 가져올때 , 능력치 이름과 수치를 가지고있는 구조체를 만들어 리스트에 담아 반환해주자.
    • 인벤토리 구성은 어떻게 할 것인가.
      • Scroll View를 사용해 인벤토리를 만들어 보자.
        • 수직 스크롤과 수평 스크롤은 사용하지 않을 것이기 때문에 인스펙터창에 수직수평스크롤을 NONE으로 해준뒤 스크롤뷰의 자식 오브젝트중 뷰포트를 제외하고 삭제해주자.
          • content에 아이템이 들어갈 것이고, 아이템은 그리드 형식으로 차곡차곡 넣어주자.
            • content에 Grid Layout Group 컴포넌트 추가, 패딩, 셀사이즈, 스페이스를 적절하게 조절해주자
            • Content Size Fitter 컴포넌트를 추가해 스크롤링이 제대로 될 수 있게 해주자.
          • Viewport의 Rect Transform 설정으로 마스크를 조절해주자.
      • 인벤토리 매니저를 만들어 아이템을 박스를 만들어 보자
        • 기본적인 아이템박스를 만들고 프리펩에 저장해놓자
        • 아이템 컨트롤러 스크립트를 만들어 아이템박스를 만들때 컴포넌트 추가시켜주자
          • 아이템컨트롤러에 스크립터블오브젝트 아이템데이터를 할당 해주자
          • 아이템 박스에 아이템컨트롤러에 추가한 아이템데이터를 사용해 이미지를 넣어주자.
          • 아이템을 누르면 아이템창이 나오게 할 것 이기 때문에, 아이템 컨트롤러의 온클릭 에드이벤트리스트너를 추가해 주자.

    2. 아이템 설명창의 재사용

    • 아이템 정보창의 구성은 어떻게 할 것인가.
      • 폼을 하나 만든뒤 정보창을 킬때 데이터만 갈아 끼워주는 식으로 만들어 보자.
        • 모든 ui를 관리하는 싱글턴 매니저를 만들어 아이템정보 폼을 위 매니저에서 관리하도록 하자.
        • 위에서만튼 아이템 박스에 온클릭 이벤트로 UI매니저에 아이템 데이터를 실어 보내주자.
        • 아이템 정보창전용 스크립트를 만들고, 정보창이 생성될때 옮겨 받은 아이템 데이터를 사용해 폼을 구성하자.
          • 인벤토리에서 정보창을 켰을때, 상점에서 켰을때, 아이템 종류가 소모품일때, 경우에 따라 정보창에 부가 설명이 달라지게 만들자.
          • 아이템의 능력치를 가져와 능력치에 따른 이미지사진과 함께 폼을 구성해주자

    • 상황에 맞는 정보창
      • 상점에서 파는 아이템의 정보를 확인할때는 능력치와 상세설명, 취소 버튼만 나오게 해주자
      • 상점이 열려있는 상태에서 인벤토리의 아이템을 클릭했을시 판매
      • 인벤토리만 열려있을시 착용 및 해제 , 사용 상호작용

     

    상점.

    1. 상점 UI 구성
    2. 상점에서 파는 아이템 UI구성
    3. 일정 시간마다 아이템 리셋
    4. 아이템 구매시 재구매 불가

     

    728x90
Designed by Tistory.