최종프로젝트 2주차 - 포션 슬롯 추가
오늘의 TMI : 점심에 칠리 타코야끼를 먹었는데 생각보다 많이 배워서 오늘 배가 하루종일 아팠다... 앞으로 칠리맛은 안먹어야지
<오늘 작업> 7/2
인벤토리에 포션 전용 슬롯 추가, 그에 따른 액티브(실제 사용)포션 슬롯 기능 구현
InventoryslotController.cs 수정PotionAmount.cs 작성IBeginDragHandler를 갖고있음PotionSlotController.cs 작성PotionChangedEvent이벤트도 추가ActivePotionSlotController.cs 작성InventoryFilter.cs 수정인벤토리에서는 아이템들끼리 스왑이 자유자재로 가능하다. 그런데 포션 전용 슬롯이 추가되면서 문제가 생겼다. 포션을 포션 전용 슬롯에 넣고 인벤토리에 있는 다른 아이템(룬, 스킬북)과 스왑을 시도했을 때 스왑이 가능한 문제가 발생한것이다. 그래서 아래 코드를 추가해 수정했다.
InventorySlotController.cs
.......OnDrop()
//포션 슬롯에서 드래그 해왔는지 확인
var fromPotionSlot = dragged.originalParent.GetComponent<PotionSlotController>();
if (fromPotionSlot != null)
{
// 스왑 대상(existing)이 있으면
var existing = GetComponentInChildren<DraggableItem>();
if (existing != null)
{
// 포션이 아닌 아이템이면 스왑 취소
if (existing.itemData.itemType != ItemType.Potion)
{
// 드래그된 포션을 원래 자리로 되돌리고 끝
dragged.transform.SetParent(dragged.originalParent, false);
dragged.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
return;
}
}
}
var fromPotionSlot = dragged.originalParent.GetComponent<PotionSlotController>();는 방금 드래그를 시작한 프리팹의 부모를 가리킨다. 여기의 포션슬롯컨토를러가 부터있다면 지금 드래그된 아이템이 포션 슬롯에서 왔다는 의미이므로 다음 검사를 진행한다.
인벤토리 슬롯 자식 중 드래그 가능한 아이템이 하나라도 있으면 스왑 대상이 있다는 뜻이다. 기존 스왑대로라면 existing과 dragged가 위치를 바꿔야 하지만 추가 제약이 걸렸다. 이 추가 제약으로 포션과 다른 아이템의 스왑을 막을 수 있다.
나머지 작업한 스크립트는 기존 슬롯 컨트롤러 스크립트들과 기본 로직이 비슷하기 때문에 굳이 따로 기재하는 않겠다.
오늘 포션은 마무리했다. 뭐 툴팁이 안뜬다는 문제는 있지만? 급하진 않으니... 어차피 나중에 액티브 슬롯도 툴팁 다 달아야 해서 같이 해결하면 좋을 것 같다. 지금 2주차가 슬슬 마무리되고 있는데 아직 미완성이란 느낌이 크긴하다. 슬슬 스토리 기획도 제대로 잡고 맵이랑 몹 등등...도 해야할거 같은데 쓰다보니 할게 엄청 많이 남았다?! 15일이 중간평가라고 하니 그때까지 화테엥
내일은 오전에 인벤토리 필터링 잘못 걸리는거 고치고 계속계속 미뤄왔던 안내문이랑 경고창 같은걸 작업해보려고 한다. ㅋㅋ 드디어한다~~~