The existence of coroutines leads me to believe that all user code in Unity is single threaded. If that is the case, does anyone know how to get around the blocking UdpClient.Receive() method? If the code were multi-threaded, then I would have a separate thread reading UDP packets and sending update messages to a controller object in another thread. Barring that, I would probably set an alarm (like a signal) to timeout the Receive() method. Anyone have any ideas how to receive UDP packets in real time without interfering with all the object updates?