DontDestroyOnLoad() not instantiated the first time game is run

Hello, I asked this question a little bit ago but it’s disappeared in the endless sea of questions so I thought I’d ask it again with the chance to reword my question.

I’ve made a game that has a dontdestroyonload gameobject called “GameManager.” inside of it the gameobject stores things like the player’s money and difficulty level.

A problem I’ve only noticed recently is that when the game is run originally (like when I delete it and reinstall it), “GameManager” isn’t even created. However, when I close the app and reopen it, the gameobject is there every next time I run the app.

Does anyone have an explanation for this?

If you want to store data you have to use PlayerPrefs function.
It can store int, float, string.

 PlayerPrefs.SetInt("key", 123);

Would be helpful if you provided code