There's no rule that says that you have to have a bunch of component classes named "SomethingManager". It's common for projects to have a bunch of Manager components, but that's often because naming things is hard and people get lazy. Having many Manager components can even be a sign of poor architecture, especially if all of these managers are large and complex classes that put too much responsibility in one place.
Putting it another way, if you're thinking "a game has to have a Game Manager, so I need to figure out what to put in my Game Manager" then you're approaching your architecture from the wrong direction. Write the code that your game needs in a way that's suited to your game. Don't try to shoehorn your code into a particular design philosophy just because you think that's what everyone else does.
Using a "Spawn Manager" as an example; I never create a single SpawnManager for my games. Instead, I create different spawners for different types of objects using a reusable object pooling system, and reference those spawners where needed. So instead of doing something like this...
public class Bomb : MonoBehavior {
// [...]
public void Explode() {
SpawnManager.Instance.SpawnBombExplosion(transform.position);
}
}
...there will be something more like this:
public class Bomb : MonoBehavior {
[SerializeField] private ExplosionSpawnPool explosionSpawnPool;
// [...]
public void Explode() {
explosionSpawnPool.SpawnAt(transform.position);
}
}
There's even a good reason to avoid the WhateverManager approach to naming: as can be seen in your question, a name like "GameManager" is not very useful because it doesn't really help you understand what the component does. A component name like "DeckShuffler" or "PlayerSpawner" gives you a very good idea of what the component does and when it should be used. "GameManager" tells you practically nothing about what specific functionality is implemented in the component. Some would argue that if you can't come up with a good simple-and-descriptive name for a class, that means that the class is too complicated.
There are so many kinds of games, and so many ways you can design and build even a particular type of game, that it's hard to find general wisdom about how to structure a project that is applicable to many projects. It's sometimes helpful to read general guides on software architecture, but some principles that make a lot of sense in other types of software don't fit well in a video game. Experience goes a long way here; the more projects that you develop, the more you'll understand what does and doesn't work and have better ideas about how to approach your architecture.
Don't settle into a standard pattern and use it over and over even if it isn't the right fit for a particular game. I'm always thinking about lessons I've learned from what I've built, and how I might improve the architecture for both the current project I'm working on and for future projects.