so i made some inventory manager for my game, it works fine , but if i spam button for open up an inventory , an null object spawn in my Inventory items list , how to delete this null object
my inventory script :
public class InventoryManager : MonoBehaviour
{
public Transform ItemContent;
public GameObject InventoryItem;
public static InventoryManager Instance;
public List<Item> Items = new List<Item> ();
public Toggle EnableRemove;
public InventoryItemController[] InventoryItems;
public HealthSystem healthSystem;
private void Awake()
{
Instance = this;
}
public void Add(Item item)
{
Items.Add(item);
}
public void Remove(Item item)
{
Items.Remove(item);
}
public void ListItems()
{
//clean item before open
foreach (Transform item in ItemContent)
{
Destroy(item.gameObject);
}
foreach (var item in Items)
{
GameObject obj = Instantiate(InventoryItem, ItemContent);
var itemName = obj.transform.Find("ItemName").GetComponent<TextMeshProUGUI>();
var itemIcon = obj.transform.Find("ItemIcon").GetComponent<Image>();
var removeButton = obj.transform.Find("RemoveButton").GetComponent<Button>();
itemName.text = item.itemName;
itemIcon.sprite = item.icon;
if (EnableRemove.isOn)
{
removeButton.gameObject.SetActive(true);
}
}
SetInventoryItems();
}
public void EnableItemsRemove()
{
if (EnableRemove.isOn)
{
foreach (Transform item in ItemContent)
{
item.Find("RemoveButton").gameObject.SetActive(true);
}
}
else
{
foreach (Transform item in ItemContent)
{
item.Find("RemoveButton").gameObject.SetActive(false);
}
}
}
public void SetInventoryItems()
{
InventoryItems = ItemContent.GetComponentsInChildren<InventoryItemController>();
for (int i = 0; i < Items.Count; i++)
{
InventoryItems_.AddItem(Items*);*_
}
}
}
when i said null object , i mean this thing
[1]
[1]: Test.mp4 - Google Drive