Honestly, I have found that it is better to get the basic concept from somewhere and script it yourself than to get the actual script from somewhere. I looked at the unity wiki script, and it seems overly complicated. You need a boolean variable( something like ‘Paused’ ), and possibly an input definition, if you want the control to be customizable. Then you need some code in the Update() function that switches the Paused variable when the desired input is pressed, and a test to see it Paused is true. In that test, you say that when Paused is true, Time.timescale is 0, and when false, 1. Then, create an OnGUI() function, with another if statement checking if Paused is true. Put all your GUI code inside that if statement. If you are executing code from a GUI button, be sure that that code does not call functions or set variables on renderers, physics, or other components that require timesteps. If you do, the code may function improperly. GUI timesteps are unaffected by the timescale, so most GUI functions are possible. To darken the screen, I usually end up creating a GUI box with Rect(0,0,Screen.width,Screen.height), and skinning it to suit the look of the game.