Instantiating on Input

Right now when I hit play in Unity a cube Instantitates right away. I am trying to have the cube instantiate on Input,(when I press T) but I am having a lot of trouble. When I execute the code in the Update method or FixedUpdate method it just spawns a ton of cubes. My code is below in C#. As you can see I have the code executed in the Start method. Any help is appreciated. Thank you for your time.

using UnityEngine;
using System.Collections;

public class Creator : MonoBehaviour {
    public GameObject thePrefab;

    // Use this for initialization
    void Start () {		
            GameObject instance = Instantiate(thePrefab, transform.position, transform.rotation) as GameObject;

Start is called once per instance of the script (so by object it’s attached to) before any Update is called.

Input.GetXXX functions lookup the state of the input requested and return true if it is correct => you’re if will return true at the exact frame you press T. That’s why it needs to be tested in Update, not Start. Then, it should work and instantiate only once (per instance of that script mind you, but the name Generator suggest that there is only one).