Idk if you'd know this already but anyway:
TIme.TimeScale = 0f;
The key to pausing in Unity. You might also need to disable some input or AI scripts since it still runs Update(), it just doesn't move anything in Unity's time (also assuming you're using Time.deltaTime for any manual non-physics movement). Then you can set things like the signs and pause menu animations to run on real time instead of Unity's time (there are ways to do that in Animators too). Then set timeScale back to 1 to unpause.