if you see update function(last) I want to press m to increase unlockSlot but the number still 1. and when i click play and I try to add number but it is not enable to us. protected virtual void Start() { for (int i = 0; i < ItemSlots.Count/5 * unlockSlot; i++) { ItemSlots.OnPointerEnterEvent += slot => EventHelper(slot, OnPointerEnterEvent); ItemSlots.OnPointerExitEvent += slot => EventHelper(slot, OnPointerExitEvent); ItemSlots.OnRightClickEvent += slot => EventHelper(slot, OnRightClickEvent); ItemSlots.OnBeginDragEvent += slot => EventHelper(slot, OnBeginDragEvent); ItemSlots.OnEndDragEvent += slot => EventHelper(slot, OnEndDragEvent); ItemSlots.OnDragEvent += slot => EventHelper(slot, OnDragEvent); ItemSlots.OnDropEvent += slot => EventHelper(slot, OnDropEvent); } } private void EventHelper(BaseItemSlot itemSlot, Action<BaseItemSlot> action) { if (action != null) action(itemSlot); } public virtual bool CanAddItem(Item item, int amount = 1) { int freeSpaces = 0; foreach (ItemSlot itemSlot in ItemSlots) { if (itemSlot.Item == null || itemSlot.Item.ID == item.ID) { freeSpaces += item.MaxStacks - itemSlot.Amount; } } return freeSpaces >= amount; } public virtual bool AddItem(Item item) { for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.CanAddStack(item)) { ItemSlots.Item = item; ItemSlots.Amount++; return true; } } for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.Item == null) { if (item.ID == item.ID) { ItemSlots.Item = item; ItemSlots.Amount++; return true; } } } return false; } public virtual bool RemoveItem(Item item) { for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.Item == item) { ItemSlots.Amount--; return true; } } return false; } public virtual Item RemoveItem(string itemID) { for (int i = 0; i < ItemSlots.Count; i++) { Item item = ItemSlots.Item; if (item != null && item.ID == itemID) { ItemSlots.Amount--; return item; } } return null; } public virtual int ItemCount(string itemID) { int number = 0; for (int i = 0; i < ItemSlots.Count; i++) { Item item = ItemSlots.Item; if (item != null && item.ID == itemID) { number += ItemSlots.Amount; } } return number; } public void Clear() { for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.Item != null && Application.isPlaying) { ItemSlots[i].Item.Destroy(); } ItemSlots[i].Item = null; ItemSlots[i].Amount = 0; } } private void Update() { if (Input.GetKeyDown(KeyCode.M)) { unlockSlot += buySlot; Debug.Log(unlockSlot); } } }[/i][/i][/i]
Hi. Suggestion: please use the "Code" function in the forum so your code is easier to read, understand and pick apart for solutions . Like this: Code (CSharp): protected virtual void Start() { for (int i = 0; i < ItemSlots.Count/5 * unlockSlot; i++) { ItemSlots.OnPointerEnterEvent += slot => EventHelper(slot, OnPointerEnterEvent); ItemSlots.OnPointerExitEvent += slot => EventHelper(slot, OnPointerExitEvent); ItemSlots.OnRightClickEvent += slot => EventHelper(slot, OnRightClickEvent); ItemSlots.OnBeginDragEvent += slot => EventHelper(slot, OnBeginDragEvent); ItemSlots.OnEndDragEvent += slot => EventHelper(slot, OnEndDragEvent); ItemSlots.OnDragEvent += slot => EventHelper(slot, OnDragEvent); ItemSlots.OnDropEvent += slot => EventHelper(slot, OnDropEvent); } } private void EventHelper(BaseItemSlot itemSlot, Action<BaseItemSlot> action) { if (action != null) action(itemSlot); } public virtual bool CanAddItem(Item item, int amount = 1) { int freeSpaces = 0; foreach (ItemSlot itemSlot in ItemSlots) { if (itemSlot.Item == null || itemSlot.Item.ID == item.ID) { freeSpaces += item.MaxStacks - itemSlot.Amount; } } return freeSpaces >= amount; } public virtual bool AddItem(Item item) { for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.CanAddStack(item)) { ItemSlots.Item = item; ItemSlots.Amount++; return true; } } for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.Item == null) { if (item.ID == item.ID) { ItemSlots.Item = item; ItemSlots.Amount++; return true; } } } return false; } public virtual bool RemoveItem(Item item) { for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots.Item == item) { ItemSlots.Amount--; return true; } } return false; } public virtual Item RemoveItem(string itemID) { for (int i = 0; i < ItemSlots.Count; i++) { Item item = ItemSlots.Item; if (item != null && item.ID == itemID) { ItemSlots.Amount--; return item; } } return null; } public virtual int ItemCount(string itemID) { int number = 0; for (int i = 0; i < ItemSlots.Count; i++) { Item item = ItemSlots.Item; if (item != null && item.ID == itemID) { number += ItemSlots.Amount; } } return number; } public void Clear() { for (int i = 0; i < ItemSlots.Count; i++) { if (ItemSlots[i].Item != null && Application.isPlaying) { ItemSlots[i].Item.Destroy(); } ItemSlots[i].Item = null; ItemSlots[i].Amount = 0; } } private void Update() { if (Input.GetKeyDown(KeyCode.M)) { unlockSlot += buySlot; Debug.Log(unlockSlot); } } } Can you please share the rest of the code w us? The variable names and all.