Hello, I have a basic inventory system that is using scriptable objects to sort things into a simple ui slot system.
I am having trouble coming up with ways to make Items stackable so that it doesn’t constantly take up all the slot spaces, like most rpg games. Here are the scripts.
using UnityEngine;
using UnityEngine.UI;
public class Inventory2 : MonoBehaviour
{
public Image[] itemImages = new Image[numItemSlots];
public Gems[] items = new Gems[numItemSlots];
public const int numItemSlots = 8;
public void AddItem(Gems itemToAdd)
{
for (int i = 0; i < items.Length; i++)
{
if (items[i] == null)
{
items[i] = itemToAdd;
itemImages[i].sprite = itemToAdd.gemImage;
itemImages[i].enabled = true;
return;
}
}
}
public void RemoveItem(Gems itemToRemove)
{
for (int i = 0; i < items.Length; i++)
{
if (items[i] == itemToRemove)
{
items[i] = null;
itemImages[i].sprite = null;
itemImages[i].enabled = false;
return;
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[CreateAssetMenu(menuName = "Mining/Gemstone")]
[System.Serializable]
public class Gems : ScriptableObject {
public string gemstone = "";
public int cost = 0;
public string description = "";
public string rarity = "Common";
public bool usable = false;
public Sprite gemImage;
public bool stackable;
}