I know the basics of C#(Syntax, 4 pillars, SOLID, Designs Patterns, etc...) and Unity. I can do basic stuff like Flappy bird or Fruit Ninja without any help. But problems arises when I want to create more advanced projects, I don't know how to structure projects and I can't find any guides on how you are supposed to do it. Like where are things supposed to go.
I know that you are supposed to create different Managers that handle the flow of your game like a "Game Manager" or a "Sound Manager" or a "Spawn Manager" or a "Score Managers" but I never know what logic I am supposed to put into it. I don't even know what managers you are supposed to create for easy games like flappy bird. Should you create a Score Managers that controls the score? What about a Game Manager, what should it control? What states should it have? Maybe "isRunning" and "gameOver", maybe.
But what about more complex games where you have an inventory, currency systems, etc... Lets say you have a "fish game where you can walk or hunt fish with a submarine and sell it to upgrade your submarine to dive deeper into the depths of the ocean." what states should the game manager than have? Should its responsibilities only be if the player is dead or not? What about dialogs, UI's, etc...
What about a 2D Platformer where your goal is to go from point A to point B with the help of the "Past you"
I have 20+ Unity games I would like to create, but I never learned how to use the knowledge I have to create things.