본문 바로가기

팀프로젝트

[完] 인벤토리, 아이템 제작 요약 이번에 팀 프로젝트 동안 만든 것 중 인벤토리에 관한 것만 구조도로 따로 정리해보자. 정리하면서 아쉬웠던 점도 같이. 먼저 만들어낸 가장 기초적인 Item Slot이다. 슬롯의 정보 세팅, 변경과 마우스에 관련된 이벤트들이 있다. 아이템 슬롯을 드래그해 옮기는 것으로 드랍, 교체 등이 가능하고 정보를 확인할 수 있다. 이 Item Slot에서 파생되는 것으로는 CreateSlot, QuickSlot이 있다. 각자 ItemSlot에서 기능이 조금 빠지기도 하고, 더해지기도 했다. 이 부분이 살짝 아쉬운데, Slot 자체로 할 수 있는 역할을 맨 위에 놓고, 그 맨 위에서 따로 상속을 받아왔으면 좋겠다는 생각이 든다. ItemSlot을 베이스로 QuickSlot과 CreateSlot을 만들다보니, 몇몇은 깡.. 더보기
[05] 아이템 슬롯 상속, Create Table 아이템 슬롯을 상속 받아서 사용한 것 중 하나가 제작 슬롯. 그 제작 슬롯 뭉치의 한 덩이를 관리하는 것이 바로 Create Table이다. private int targetItemID; private int targetItemAmount; [Serializable] public class materialItem { public CreateItemSlot slot; public int materialItemID; public int materialItemAmount; } public CreateItemSlot targetItem; public materialItem[] materialItems; 위는 Create Table의 구성 요소로, 타겟 아이템(제작이 될 아이템)과 거기에 들어가는 재료 슬롯(재료.. 더보기
[04] 아이템 슬롯 상속, 퀵슬롯 아이템 슬롯은 SetSlot() 함수를 포함해, 드래그와 포인터, 클릭 이벤트들을 대량으로 포함하고 있다. 그렇지만 아이템 슬롯이 다 똑같지는 않은데, 이번에 제작하는 게임에서의 아이템 슬롯은 3가지 종류가 있다. 1. 인벤토리 슬롯 2. 퀵 슬롯 3. 제작창 슬롯 똑같이 아이템 ID를 기반으로 아이콘과 정보들을 데이터베이스에서 읽어와서 입력해놓지만, 각자 가지고 있을 기능은 조금 다르다. 인벤토리 슬롯 퀵슬롯 제작 슬롯 툴팁 설명 TRUE FALSE TRUE 드래그-드랍 TRUE TRUE FALSE 아이템 삭제 TRUE FALSE FALSE 아이템 사용 FALSE TRUE FALSE 슬롯 세팅 TRUE TRUE FALSE 이 세 슬롯은 공통점을 공유하니, 완전 각자 독립적으로 짜는 것은 비효율적이다. .. 더보기
[03] 인벤토리 기능 인벤토리에는 무슨 기능이 있어야 할까? 그걸 떠올리기 위해 특정 상황을 생각해보자. 가장 먼저 흔한 상황은 아이템을 획득하는 상황이다. 아이템을 획득하면, 인벤토리의 빈 슬롯에 아이템이 들어가서 자리잡게 된다. 그렇다면 인벤토리는 슬롯이 비어있는지 확인하는 기능이 필요할 것이고, 슬롯에 아이템을 추가하는 기능이 필요하다. 그러니 가장 먼저 떠오르는 인벤토리의 기능으로는 두가지가 있다. 1. 슬롯이 비어있는지 확인 2. 슬롯에 아이템을 추가. 슬롯이 비어있는지 확인하는 것은 간단하다. 우리는 인벤토리를 List으로 구성했으므로, 인벤토리 길이만큼 돌면서 슬롯에 있는 아이템의 ID를 확인해보면 된다. 이렇게 하면 비어있는 것 말고도 특정 아이템이 있는지, 있다면 어느 위치에 있는지에 대한 정보를 알 수 있다.. 더보기
[02] 아이템 슬롯 우선 프리팹을 Resources 폴더에 넣어서, 아이템 ID를 통해 생성하는 것으로 하자. 최근 유니티는 큰 게임 개발에서 Addressable Asset System인가로 Resource 매니저를 대신한다는데, 게임이 그렇게 커질 것 같지는 않으므로 작게 들어가겠다. public void DropItemToField(int id) { //ID 받아와서 필드 내에 prefab 드롭함 if(id == 0) { Debug.Log("그런 아이템은 없다."); return; } else { string itemPrefabFile = $"{itemPrefabPath}{id.ToString()}"; GameObject itemPrefab = Resources.Load(itemPrefabFile) as GameObj.. 더보기
[01] 아이템 데이터베이스 팀 프로젝트에서 아이템 - 인벤토리 관련을 만드는 역할을 맡았다. 우선 순서는 아이템을 다른 사람이 편하게 추가할 수 있는 DB를 만드는 것. .csv파일을 아이템 데이터베이스로 활용하여 다른 팀원들이 쉽게 수정할 수 있도록 만들어보자. .csv파일은 여러가지로 만들 수 있지만, 역시 가장 편한것은 엑셀과 메모장이라고 생각한다. 간단하게 확인할 때는 메모장으로, 작성할 때는 엑셀로 쓰는 것이 편하다. 임시로 몇가지 아이템을 만들어서 .csv 파일로 저장해보자. 인코딩은 UTF-8을 사용할 것이다. 엑셀의 첫 번째(열 이름) 행에는 분류가 들어가고, 각각 ID에 의해 지정될 것이다. 그 뒤에는 아이템의 특성들이 나열되어있다. 작성한 이후 유니티의 Asset-Resources 폴더에 넣어주자. ※ 폴더 이름.. 더보기