이 글은 매우 매우 오래되었음을 알려드립니다!
유니티 인벤토리 장비 슬롯을 추가하고 타입을 확인하여 장비타입만 장비 슬롯에 넣을 수 있도록 구현한다.
기존의 그리드 레이아웃 슬롯에서 장비슬롯을 나타낼 장비슬롯 빈 오브젝트에 네개의 추가 슬롯을 만들고 이를 slots에 추가한다.
mSlotsParent와 mEquipmentSlotParent의 자식들을 합쳐 slots 배열에 넣어준다.
추가로 각 슬롯들에 번호를 부여하여 자신이 몇번인지 알도록 한다.
이유는 노멀슬롯 범위를 벗어난경우 (장비슬롯일경우)를 확인해야하기 때문
해당 프로젝트에서는 노멀슬롯 개수는 36개임
public static int NormalSlotCount 변수로 노멀슬롯의 개수를 저장한다. 각 인벤토리 슬롯에서 참조하기위해 (하드코딩 방지)
//Inventory.cs
public static int NormalSlotCount = 0; // 노멀슬롯의 개수를 파악하기 위해
[SerializeField] private GameObject mInventoryBase; // Inventory_Base 이미지
[SerializeField] private GameObject mSlotsParent; // Slot들의 부모인 Grid Setting
[SerializeField] private GameObject mEquipmentSlotParent; // 장비 슬롯 부모
private InventorySlot[] slots; // 슬롯들 배열
void Start()
{
slots = mSlotsParent.GetComponentsInChildren<InventorySlot>();
InventorySlot[] equipmentTempSlots = mEquipmentSlotParent.GetComponentsInChildren<InventorySlot>();
int slotsOriginLength = NormalSlotCount = slots.Length;
Array.Resize<InventorySlot>(ref slots, slotsOriginLength + equipmentTempSlots.Length);
Array.Copy(equipmentTempSlots, 0, slots, slotsOriginLength, equipmentTempSlots.Length);
for(int i = 0; i < slots.Length; ++i)
{
slots[i].SetArrayNum(i);
}
}
노멀슬롯 36개와 장비슬롯4개. 장비슬롯 디자인은 추후 변경해야함
인벤토리슬롯에서 온드롭이 발생할경우 드롭할 위치가 NormalSlot보다 큰지 (장비칸인가?) 확인하고
장비칸일경우, 해당 아이템의 타입이 장비인지 확인하고 참이면 슬롯을 이동시키고, 거짓이면 무효화한다.
//InventorySlot.cs
public void OnDrop(PointerEventData eventData)
{
Debug.Log("OnDrop");
if(IsNotEquipType()) return;
if (DragSlot.instance.dragSlot != null)
ChangeSlot();
}
private bool IsNotEquipType()
{
if(Inventory.NormalSlotCount < mArrayNum) //만약에 대상의 배열 숫자가 일반슬롯보다 클경우 (장비칸인가?)
{
if(DragSlot.instance.dragSlot.GetItem().GetItemType() == Item.ItemType.Equipment)
{
return false; //장비칸에 이동 가능
}
else
{
return true; //장비칸에 이동 불가능
}
}
return false; //장비 아이템 그리고 슬롯이 장비칸이 아님
}
'unity game modules' 카테고리의 다른 글
[유니티] 안개 효과 (던전 입장 효과) (0) | 2022.07.16 |
---|---|
[유니티] 3인칭 움직이기 (0) | 2022.07.16 |
[유니티] 공격(스킬) 범위 표시 (0) | 2022.07.16 |
[유니티] 오브젝트 풀 (Object Pool) (0) | 2022.07.16 |
[유니티] 아이템 사용하기 (0) | 2022.03.05 |