next time a level loads things arent there that were before?

say i have a scene with a pot, and inside the pot is a healthpack, so if the player gets the healthpack next time the scene loads or even restarts the game and goes to that pot i dont want there to be a healthpack in the pot anymore, how exactly do i go about doing this

You can use PlayerPrefs.

public string key;

void Awake()
{ 
   if(PlayerPrefs.HasKey(key))Destroy(gameObject);
}

void OnTriggerEnter(Collider col){
    if(col.tag == "Player"){
         // Add to inventory
         PlayerPrefs.SetInt(key, 1);
    }
}

This is simplified and attached to each collectible. In the Awake, if the key is already registered in the PlayerPrefs, then you destroy the game object.

The collision is there to create the key. So once you collided with the collectible, the key is added for the first time to the PlayerPrefs.

The public string allows you to define the unique name of the power up.

You could/should come up with a system to avoid duplicate, like getting all object of type collectible or with tag collectible and checking if the key is found twice and then LogError.