'Destroy element when craft is complete Unity 3d c#

I have been making a game on Unity following the tutorial by Sykoo, this one. And I have a problem with the crafting system, when I want the items to be destroyed when the craft is made, but I dont know how to do it. Can someone help me please?

here is the craft item script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class CraftableItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public GameObject thisItem;

    public int requiredItems;
    public GameObject[] item;

    private bool hovered;

    private GameObject player;
    private GameObject itemManager;



    public void Start()
    {
        player = GameObject.FindWithTag("Player");
        itemManager = GameObject.FindWithTag("ItemManager");
    }

    public void Update()
    {
        if (hovered == true)
        {
            if(Input.GetMouseButtonDown(0))
            {
                CheckForRequiredItems();
            }
            
        }    
    }


    public void CheckForRequiredItems()
    {
        int itemsInManager = itemManager.transform.childCount;

        if (itemsInManager > 0)
        {
            int itemsFound = 0;
            for(int i = 0; i < itemsInManager; i++)
            {
                for (int z = 0; z < requiredItems; z++)
                {
                    if (itemManager.transform.GetChild(i).GetComponent<Item>().type == item[z].GetComponent<Item>().type)
                    {
                        itemsFound++;
                        break;
                    }
                }
            }

            if (itemsFound >= requiredItems)
            { 
                GameObject spawndedItem = Instantiate(thisItem, /* pos,*/player.transform.position, Quaternion.identity);
            }
        }
    }

    
    public void OnPointerEnter(PointerEventData eventData)
    {
        hovered = true;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        hovered = false;
    }
}

the inventory script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Inventory : MonoBehaviour
{
    //Instructions *correct
    public GameObject inventory;
    public GameObject slotHolder;
    public GameObject itemManager;
    private bool inventoryEnabled;

    private int slots;
    private Transform[] slot;

    private GameObject itemPickedUp;
    private bool itemAdded;

    private GameObject player;

    //Start *correct
    public void Start()
    {
        // slots being detected
        inventoryEnabled = true;
        slots = slotHolder.transform.childCount;
        slot = new Transform[slots];
        DetectInventorySlots();
    }

// Inventory GUI
    public void Update()
    {
        if (Input.GetKeyDown(KeyCode.I))
        {
            inventoryEnabled = !inventoryEnabled;
        }

        if(inventoryEnabled)
        {
            inventory.GetComponent<Canvas>().enabled = true;
            Time.timeScale = 0;
            Cursor.visible = true;
            Cursor.lockState = CursorLockMode.None;
        }
        else
        {
            inventory.GetComponent<Canvas>().enabled = false;
            Time.timeScale = 1;
            Cursor.visible = false;
            Cursor.lockState = CursorLockMode.Locked;
        }  
    }

// Inventory Pick *correct

    public void OnTriggerStay(Collider other)
    {
        if (other.tag == "Item")
        {
            itemPickedUp = other.gameObject;
            AddItem(itemPickedUp);
        }
    }

    public void OnTriggerExit(Collider other)
    {
        if (other.tag == "Item")
        {
            itemAdded = false;
        }
    }

// Add Item *correct
   
    public void AddItem(GameObject item)
    {
        for (int i = 0; i < slots; i++)
        {
            if (slot[i].GetComponent<Slot>().empty && itemAdded == false)
            {
                slot[i].GetComponent<Slot>().item = itemPickedUp;
                slot[i].GetComponent<Slot>().itemIcon = itemPickedUp.GetComponent<Item>().icon;

                //attachs the item to the hand *correct
                item.transform.parent = itemManager.transform;
                item.transform.position = itemManager.transform.position;

                //equipar arma
                item.transform.localPosition = item.GetComponent<Item>().position;
                item.transform.localEulerAngles = item.GetComponent<Item>().rotation;
                item.transform.localScale = item.GetComponent<Item>().scale;
                Destroy(item.GetComponent<Rigidbody>());

                itemAdded = true;
                item.SetActive(false);
            }
        }
    }
// Detect slots *correct
    public void DetectInventorySlots()
    {
        for (int i = 0; i < slots; i++)
        {
            slot[i] = slotHolder.transform.GetChild(i);
        }

        inventory.GetComponent<Canvas>().enabled = true;
        inventoryEnabled = false;
    }
}

and the slot script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems; // Required when using Event data.
using UnityEngine.UI;

public class Slot : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
{
    //instructions *correct
    private bool hovered;
    public bool empty;
    public Image image;


    public GameObject item;
    public  Texture itemIcon;

    private GameObject player;

    //Update *correct
    void Start()
    {
        player = GameObject.FindWithTag("Player");
        hovered = false;
        image.enabled = false;
    }

    void Update()
    {

        if (item)
        {
            empty = false;
            itemIcon = item.GetComponent<Item>().icon;
            this.GetComponent<RawImage>().texture = itemIcon;
        } else {
            empty = true;
            this.GetComponent<RawImage>().texture = null;
        }
    }

    //Pointer *correct
    public void OnPointerEnter(PointerEventData eventData)
    {
        hovered = true;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        hovered = false;
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        if(item)
        {
            Item thisItem = item.GetComponent<Item>();

            //water
            if(thisItem.type == "Water")
            {
                player.GetComponent<Player>().Drink(thisItem.decreaseRate);
                Destroy(item);
            }

            //food
            if (thisItem.type == "Food")
            {
                player.GetComponent<Player>().Eat(thisItem.decreaseRate);
                Destroy(item);
            }

            //weapon

            if(thisItem.type == "Weapon" && player.GetComponent<Player>().weaponEquipped == false)
            {
                thisItem.equipped = true;
                item.SetActive(true);
                imageEnabled();
            }

            if (thisItem.type == "Weapon" && player.GetComponent<Player>().weaponEquipped == true)
            {
                thisItem.equipped = false;
                item.SetActive(false);
                image.enabled = false;
                player.GetComponent<Player>().weaponEquipped = false;
            }
        }
    }

    public void imageEnabled()
    {
        image.enabled = !image.enabled;
    }

    public class StackItem
    {
        public Item item = new Item();
        public int amount = 1;
    }

}

but i think you will only need the craft system script. Hope someone can help me.



Solution 1:[1]

Seems like your craft is completed on this instruction:

if (itemsFound >= requiredItems)
{ 
    GameObject spawndedItem = Instantiate(thisItem, /* pos,*/player.transform.position, Quaternion.identity);
}

Next to GameObject spawndedItem... string you can specify your element deletion code, as an example:

if (itemsFound >= requiredItems)
{ 
    GameObject spawndedItem = Instantiate(thisItem, /* pos,*/player.transform.position, Quaternion.identity);
    Destroy(GameObject.Find("ObjectThatYouWantToDestroyName"));
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 RelativeLayouter