public class UI_ItemSlot : MonoBehaviour, IPointerDownHandler
{
[SerializeField] private Image itemImage;
[SerializeField] private TextMeshProUGUI itemText;

public InventoryItem item;

public void CleanUpSlot()
{
...
}

public void UpdateSlot(InventoryItem _newItem)
{
...
}

public virtual void OnPointerDown(PointerEventData eventData)
{
if (item.data?.itemType == ItemType.Equipment)
{
Debug.Log(item?.data);
Inventory.instance.Equipment(item.data);
}
}
}

public class UI_EquipmentSlot : UI_ItemSlot
{
public EquipmentType slotType;

private void OnValidate()
{
gameObject.name = "Equipment slot - " + slotType.ToString();
}

public override void OnPointerDown(PointerEventData eventData)
{ย ย ย ย 
ย ย ย ย ย ย ย Debug.Log("Pointer Equipment");
Inventory.instance.Unequipment(item.data as ItemData_Equipment);
CleanUpSlot();
}
}


์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ OnPointerDown ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ์š”.


UI_EquipmentSlot ์—์„œ๋Š” OnPointerDown ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.. OnValidate ๋Š” ์ž˜ ์ž‘๋™ํ•˜๊ตฌ์š”.


base.OnPointerDown() ๋„ ํ•ด๋ณด์•˜์ง€๋งŒ ๋ฐœ๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.


UI_EquipmentSlot ์˜ ์Šฌ๋กฏ์„ ํด๋ฆญํ•˜๋ฉด UI_ItemSlot ์˜ OnPointerDown ์€ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค.


๋‹ค๋งŒ item ์„ ์ง‘์–ด๋„ฃ์€ ์ƒํƒœ์ž„์—๋„ item.data <- ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์นธ์—์„œ๋Š” ์ธ์‹์ด ์ž˜ ๋˜๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.


๋ญ๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ๊ฑฐ๊พธ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ๋””๋ฒ„๊ทธ๋ฅผ ์‹œ๋„ํ•ด๋ณด์•˜์ง€๋งŒ ์ˆ˜์‹œ๊ฐ„ ์งธ ํ•ด๊ฒฐ์ด ์•ˆ๋˜์„œ ์—ฌ์ญค๋ด…๋‹ˆ๋‹ค..ย 


์ฐธ๊ณ  ์˜์ƒ ๋‚จ๊ฒจ๋“œ๋ฆฝ๋‹ˆ๋‹ค.



๊ฒŒ์ž„ ๊ฐœ๋ฐœํ•˜๋Š” ์ง€์ธ์ด ์—†๋‹ค๋ณด๋‹ˆ ์—ฌ๊ธฐ์— ์งˆ๋ฌธ๊ธ€ ๋‚จ๊ธฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ใ…œ ๋„์™€์ค˜์ž‰..