public void Down() { Debug.Log("Down 누름"); // 슬롯에 아이템이 없으면 함수종료. if (!slot.isSlots()) { Debug.Log("슬롯에 아이템이 없으면 함수종료"); return; } // 처음 슬롯을 선택하는 경우. if (!checkClick) { checkClick = true; // 빈 이미지의 스프라이트를 슬롯의 스프라이트로 변경한다. //EmptyImg.sprite = slot.ItemReturn().DefaultImg; // 빈 이미지의 위치를 마우스위로 가져온다. //Img.transform.position = Input.mousePosition; } // 슬롯을 두 번째 선택하는 경우 Swap else if (checkClick) { // isSlots플래그가 false이면 슬롯에 아이템이 존재하지 않는 것이므로 함수 종료. if (!slot.isSlots()) { return; } Debug.Log("스왑함수 호출"); Img.transform.position = Input.mousePosition; // 싱글톤을 이용해서 인벤토리의 스왑함수를 호출(현재 슬롯, 빈 이미지의 현재 위치.) ObjectManager.Call().unitSlots.Swap(slot, Img.transform.position); checkClick = false; //slot = null; } }
// 아이템 옮기기 및 교환. public void Swap(Unit_Slot slot, Vector3 Pos) { Unit_Slot FirstSlot = NearDisSlot(Pos); // 현재 슬롯과 옮기려는 슬롯이 같으면 함수 종료. if (slot == FirstSlot || FirstSlot == null) { slot.UpdateInfo(true, slot.slot.Peek().DefaultImg); return; } // 가까운 슬롯이 비어있으면 옮기기. if (!FirstSlot.isSlots()) { //Swap(FirstSlot, slot); } // 교환. else { int Count = slot.slot.Count; ItemObject item = slot.slot.Peek(); Stack <ItemObject> temp = new Stack <ItemObject>(); { for (int i = 0; i < Count; i++) { temp.Push(item); } slot.slot.Clear(); } Swap(slot, FirstSlot); { Count = temp.Count; item = temp.Peek(); for (int i = 0; i < Count; i++) { FirstSlot.slot.Push(item); } FirstSlot.UpdateInfo(true, temp.Peek().DefaultImg); } } }