Keeping TArray of pointers across levels with GameInstance

I have a basic inventory system that works fine, except when I use OpenLevel() to transition between levels, all the items in my inventory disappear. I’ve tried using a custom Game Instance to store a TArray of item pointers as shown in the code below. I thought putting the data here would carry it across levels like it does with my other variables, but it does not. I’ve seen others post solutions involving Save Game data, but I’d like to try to stick to using the Game Instance if possible.

Inventory declaration in Game Instance header

UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<AItem*> Inventory_Space;

Implementation of adding item to inventory in Character.cpp

void ABatteryManPlayer::Add_Item_To_Inventory(AItem* Item)
{
	if (Item) {
		const int32 Available_Slot = Instance->Inventory.Find(nullptr);

		if (Available_Slot != INDEX_NONE) {
			Instance->Inventory_Space[Available_Slot] = Item; 
		}
	}
}