Creating Game Manager using state machine and singleton pattern unity3d singleton game-manager pattern monobehaviour