How to make a timer?

I’m making a game (duh) and I want a timer before it moves to the next level(scene)
Here’s the code

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float speed;
public Text countText;
public Text winText;

private Rigidbody rb;
private int count;

void Start ()
{
	rb = GetComponent<Rigidbody>();
	count = 0;
	setCountText ();
	winText.text = "";
}

void FixedUpdate ()
{
	float moveHorizontal = Input.GetAxis ("Horizontal");
	float moveVertical = Input.GetAxis ("Vertical");

	Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);

	rb.AddForce (movement * speed);
}

void OnTriggerEnter(Collider other) 
{
	if (other.gameObject.CompareTag ("Pick Up"))
	{
		other.gameObject.SetActive (false);
		count = count + 1;
		setCountText ();
	}
}

void setCountText ()
{
	countText.text = "Count: " + count.ToString ();
	if (count >= 12) 
	{
		winText.text = "You Win!";
		Application.LoadLevel("Level 2");
	}
}

}

Here’s the important part
`void setCountText ()
{
countText.text = "Count: " + count.ToString ();
if (count >= 12)
{
winText.text = “You Win!”;
<I need timer here
Application.LoadLevel(“Level 2”);
}
so… how?

And? do you get an error message? what is your issue?
In the latest version of unity you should use sceneManager and not application load - see here Unity - Scripting API: SceneManager
but I don’t think that should prevent it from working you’ll just get an obsolete warning…

void setCountText ()
{
countText.text = "Count: " + count.ToString ();
if (count >= 12)
{
winText.text = “You Win!”;
invoke(“loadLevel”, 1f);
}
}

void loadLevel(){
     Application.LoadLevel("Level 2");
}

this will load your level after one second, edit the invoke timer according to your needs