위 이미지에서 보시면 Slots의 정보를 등록할 때 앞 내용에서 사용자가 직접 등록해 줘야 했습니다.
이미지 하단의 버튼을 이용해 한번에 자동으로 가져 오는 기능을 추가해 볼까 합니다.
버튼이 정상 작동하려면 우선 Slot Parent의 Content A와 B가 등록되어 있어야 합니다.
우선 InevntroyManager.cs를 열어 주세요.
using 선언부에 위 내용을 추가 해 주세요
#if UNITY_EDITOR와 #endif로 현재 선언된 using은 유니티 에디터에서만 사용된다는 걸 알려줘야 합니다.
만약 이 선언이 없다면 게임 컴파일시 에러가 발생하니 참고해 주세요
계속 InevntroyManager 에 추가되는 내용입니다.
이 부분은 일반 메서드이지만 에디터에서만 사용하기에 #if UNITY_EDITOR 를 선언해 주었습니다.
RefreshSlotsManual은 위 이미지의 "Inventory Slot 가져오기" 버튼에 연결될 메서드로 사용될 것입니다.
inevntorySlots.Clear() -> 버튼이 클릭된다는건 새롭게 슬롯을 가져오기에 기존 리스트의 내용을 지워줍니다.
그런 후 slotParent에 등록된 Content A와 B가 두 개 등록 되어 있으니 for문은 두 번 돌게 되겠죠.
AddRange은 Content A의 자식으로 있는 InventorySlot을 한번에 가져오는 역할을 하게 됩니다.
앞에서 20개의 Slot을 만들었고 Content A와 B가 두개 있으니 40개를 가져오게 됩니다.
현재 메서드로 Slot을 가져올 수 있는 기능은 완성 되었으니 버튼을 만들고 현재의 메서드를 연결해 보겠습니다.
새로운 클래스를 만들어도 되지만 InventoryManager에 같이 만들어 주겠습니다.
CustomEditor(typeof(InventoyManager)) -> 현재의 에디터는 InventoryManager에서 사용된다는걸 선언해 줍니다.
나머진 에디터에 UI를 그리기 위한 기본 선언들이고
InventoryManager inventory = ( InventoryManager)target을 이용해 InventoryManager를 가져옵니다.
GUILayout.Button을 이용해 버튼을 만들고 그 버튼에 연결될 메서드로 위에서 만든inventory.RefreshSlotsManual() 메서드를 연결해 줍니다.
위 이미지의 슬롯의 값이 0으로 나와 있습니다.
방금 만든 버튼을 이용해서 Slot을 추가해 보겠습니다.
40개가 추가 되었네요.
Content가 늘어나면 꼭 필요한 기능이 아닐까 합니다.
'Unity' 카테고리의 다른 글
유니티 (Unity) - 실전 인벤토리 제작 (5부) (6) | 2025.07.28 |
---|---|
유니티 (Unity) - 실전 인벤토리 제작 (4부) (4) | 2025.07.26 |
유니티 (Unity) - 실전 인벤토리 제작 (3부) (0) | 2025.07.25 |
유니티 (Unity) - 실전 인벤토리 제작 (2편) (0) | 2025.07.24 |
유니티 (Unity) - 실전 인벤토리 제작 (1편) (0) | 2025.07.24 |