Physics.Raycast() always returns false

I am working with a main menu for a game. I have added some 3D Texts to use them as button and i have assigned the following script to Main Camera:

void Update () {
	foreach (Touch touch in Input.touches) {
    if (touch.phase == TouchPhase.Began) {
        Ray ray = Camera.main.ScreenPointToRay(touch.position);
        RaycastHit hit ;
        if (Physics.Raycast (ray, out hit)) {
			Debug.Log("HIT HIT FOUND");
             if(hit.transform.name == "Option_Start"){
				Application.LoadLevel("RedCubeScene");
			}
			if(hit.transform.name == "Option_Exit"){
				Application.Quit();
			}
        }
    }
}
}

However, always I click one of the texts nothing happens. Log dont show anything.

Any idea what could happen??

(I am using an Android phone)

Does the game objects that have the 3DText component also have any collider? You need a collider to be able to hit anything.


By the way… if the only thing you want to do is add a simple button that the user can click, there is a much easier way to do this.

Just add the following code to any script component (C# example):

void OnGUI()
{
    // 100,100 is the screen position (0,0 is top-left). 200,30 is the size.
    if (GUI.Button(new Rect(100, 100, 200, 30), "Press Me"))
    {
        // code that executes when the user clicked the button.
    }
}