아이템 슬롯을 상속 받아서 사용한 것 중 하나가 제작 슬롯.
그 제작 슬롯 뭉치의 한 덩이를 관리하는 것이 바로 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의 구성 요소로, 타겟 아이템(제작이 될 아이템)과 거기에 들어가는 재료 슬롯(재료들)로 이루어져 있다.
테이블에 목표하는 아이템의 ID와 수량을 적고, 재료로 될 아이템들의 ID와 수량을 적으면 해당하는 아이템 슬롯들을 Set하는 형식으로 만들었는데, 그렇다면 필요한 기능(함수)들은 아래와 같다.
private void InitializeTable()
{
}
public void SetSlots()
{
}
public void TestCreateCondition()
{
}
public void CreateItemToInventory()
{
}
늘상 하는 초기화 함수. 그리고 초기화 이후 실행해줄 각 슬롯들의 설정.
InitializeTable는 인벤토리를 여는 액션에 TestCreateCondition 이벤트를 추가해준다.
SetSlots은 입력한 정보를 기반으로 각 슬롯에 아이콘 이미지와 텍스트 설명을 삽입한다.
TestCreateCondition은 이 Table이 제작 가능한지 확인하고, 가능하다면 제작 버튼을 활성화한다.
CreateItemToInventory는 제작 버튼을 눌렀을 때, 인벤토리에서 재료 아이템을 삭제하고, 타겟 아이템을 생성해서 인벤토리 슬롯에 추가한다.
※원래 materialItem은 구조체로 만드려고 했으나, 에디터 내에서 보이지 않아서 Class로 변경.
만약 다시 만든다면 Create Table을 미리 여러개 만들어 놓는 것이 아니라, 데이터 베이스 내에서 제작 가능한 아이템의 Bool값을 읽어와서 그 숫자만큼의 Table을 자동으로 생성, 할당하는 식으로 만들고 싶다.
(현재는 각 테이블에 타겟과 재료 정보를 에디터에서 입력해주어야 함)
'팀프로젝트' 카테고리의 다른 글
[完] 인벤토리, 아이템 제작 요약 (1) | 2024.01.21 |
---|---|
[04] 아이템 슬롯 상속, 퀵슬롯 (1) | 2023.12.14 |
[03] 인벤토리 기능 (0) | 2023.12.11 |
[02] 아이템 슬롯 (0) | 2023.11.28 |
[01] 아이템 데이터베이스 (0) | 2023.11.23 |