Item.cs
[System.Serializable] public class Item { public string name; public int count; public Item(string itemName, int itemCount) { name = itemName; count = itemCount; } }
Inventory.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Inventory : MonoBehaviour { public static Inventory instance; public List<Item> items = new List<Item>(); void Awake() { if (instance != null) Destroy(gameObject); else instance = this; } public void AddItem(Item itemToAdd) { bool itemExists = false; foreach (Item item in items) { if(item.name == itemToAdd.name) { item.count += itemToAdd.count; itemExists = true; break; } } if(!itemExists) { items.Add(itemToAdd); } Debug.Log(itemToAdd.count + " " + itemToAdd.name + "added to inventory."); } public void RemoveItem(Item itemToRemove) { foreach (var item in items) { if(item.name == itemToRemove.name) { item.count -= itemToRemove.count; if(item.count <= 0) { items.Remove(itemToRemove); } break; } } Debug.Log(itemToRemove.count + " " + itemToRemove.name + "removed from inventory."); } }
Pickup.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Pickup : MonoBehaviour { public Item item = new Item("Item Name", 1); void OnTriggerEnter(Collider other) { if(other.CompareTag("Player")) { Inventory.instance.AddItem(item); Destroy(gameObject); } } }