Why does my game forget which shape my player has when loading a new room?

So here’s the deal: I have a game and in it you are playing as a cube and you can travel between rooms and once you enter a trigger, it will load a new scene(room) and your position will be set and DontDestroyOnLoad is called for the player object so that things that you have done to your player should not be destroyed, like color, since there is a cheat for changing color, and shape, since you can enter a cheat and become a ball instead of a cube.

Now, the problem is if you enter the cheat to become a ball, and you enter a new room, the cube-model gets enabled again for some reason even though it shouldn’t.

Why is this happening? Could there be a problem with my cheat script?

LoadLevel-Script: JustPaste.it - Share Text & Images the Easy Way

Cheats-script: JustPaste.it - Share Text & Images the Easy Way

instead of doing this:

DontDestroyOnLoad(GameObject.Find("PLAYER"));
player = GameObject.Find("PLAYER").gameObject;

Try doing this:

player = GameObject.Find("PLAYER").gameObject;
DontDestroyOnLoad(player);

Remember that finding a player by tag is bad practice. if you have a player script attached to the player try to find the player by type by using FindObjectOfType(), or even better build a player manager that keeps track of the player(s)