I'm still a bit new to Unity, but I've been coding for a long time before this. I need to perform some socket communication BEFORE the game starts. Ideally, I'd like the Start() function to not be finished until all the sockets answer back. If I use Start as a coroutine, then it will unfortunately not work because after the first yield, Update() starts to get called, which is not the intended behavior. I'm aware that I could "fake" it by performing a game-wide "if (disabled) return" in all Update() functions, or set timescale to 0. Perhaps this is the right way to do it? It feels "fake" to me because ideally I'd like to be able to, for example, in Awake call a Unity static function that blocks the engine from advancing to Start until I allow it to (say, when all my socket operations are complete).