Hi guys,
I found this inventory script on GitHub and for the most part, it’s been working fine and saving me from having to code a script myself: https://github.com/nzhul/inventory-system
There are some parts of the script I don’t understand, such as the else if statement in the below excerpt:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;
public class Slot : MonoBehaviour, IDropHandler
{
public int id;
private Inventory inv;
public RectTransform invPanel;
void Start()
{
inv = GameObject.Find("Inventory").GetComponent<Inventory>();
}
public void OnDrop(PointerEventData eventData)
{
ItemData droppedItem = eventData.pointerDrag.GetComponent<ItemData>();
if (inv.items[id].Id == -1)
{
inv.items[droppedItem.slotId] = new Item();
inv.items[id] = droppedItem.item;
droppedItem.slotId = id;
Debug.Log("Testing 1");
}
// ???
else if (droppedItem.slotId != id)
{
Transform item = this.transform.GetChild(0);
item.GetComponent<ItemData>().slotId = droppedItem.slotId;
item.transform.SetParent(inv.slots[droppedItem.slotId].transform);
item.transform.position = inv.slots[droppedItem.slotId].transform.position;
droppedItem.slotId = id;
droppedItem.transform.SetParent(this.transform);
droppedItem.transform.position = this.transform.position;
inv.items[droppedItem.slotId] = item.GetComponent<ItemData>().item;
inv.items[id] = droppedItem.item;
Debug.Log("Testing 2");
}
}
}
Apart from this, I have been trying to build a way to remove items from the inventory, which doesn’t seem to be part of the script. I tried adding the below snippet into the OnDrop() function:
else if(RectTransformUtility.RectangleContainsScreenPoint(invPanel, Input.mousePosition))
{
Debug.Log("Item dropped");
}
And this into my Start() function:
invPanel = GameObject.Find("InventoryPanel").GetComponent<RectTransform>() as RectTransform;
But the code doesn’t do anything. Any advice on what to do? Thank you!