Delay gameplay and show text:

Hey there! Im currently working on a game where I basicly have a main character running away from a policeman.Im having trouble with it because as soon as the game starts the policeman starts following him and it doesnt give the player time to prepare himself, so I would like to delay that for a few seconds, and maybe show a text on the screen with a countdown( 3,2,1, go!) and the game not being able to start until that has been shown. this is the script I used for the policeman:

var enemy: Transform;
var player: GameObject;
var dir: Vector3;
var speed: float;
var observed: boolean;

function Update () {
if (observed) {
dir = player.transform.position - transform.position;
dir = dir.normalized; 

transform.Translate(dir * speed, Space.World);
}
else {
    transform.eulerAngles.y = Mathf.PingPong(/*Time.time*/20,90) -45;

}

}
function OnTriggerEnter(other: Collider){
    if(player) observed = true;
}

yield WaitForSeconds(3)
//run forest, run!

Wait for 3 seconds, than make the police run.

You can't call yield inside a Update() function, since then it would wait 3 seconds every frame. Well you CAN, if you put yield inside a function, then call the function in Update();.

var enemy: Transform;
var player: GameObject;
var dir: Vector3;
var speed: float;
var observed: boolean;
var showMoreGUI = true;

if (showMoreGUI == true) {
function OnGUI()
{
  //message
}
}

yield WaitForSeconds(3)

function Update () {
shoeMoreGUI = false;
if (observed) {
dir = player.transform.position - transform.position;
dir = dir.normalized; 

transform.Translate(dir * speed, Space.World);
}
else {
    transform.eulerAngles.y = Mathf.PingPong(/*Time.time*/20,90) -45;

}

}
function OnTriggerEnter(other: Collider){
    if(player) observed = true;
}

...Maybe.

To wait a certain amount of time for an event you will want to use a coroutine (see StartCoroutine reference). These allow you to delay execution of code or run it over multiple frames.

var started : boolean = false;

function Start() 
{
StartCoroutine(WaitToStart());
}

function WaitToStart() 
{
yield WaitForSeconds(3.0f);
started = true;
}

function Update()
{
if(observed && started)
{ 
  // follow player
}
}

If you wanted to display this countdown timer to the player, you could modify the coroutine WaitForSeconds to update a status message as it counts down:

var startStatus : string;
function WaitToStart()
{
    startStatus = "3";
    yield WaitForSeconds(1.0f);
    startStatus = "2";
    yield WaitForSeconds(1.0f);
    startStatus = "1";
    yield WaitForSeconds(1.0f);
    startStatus = "GO!";
    started = true;
}