Raycast MouseOver: How to get it to go away when mouse is not over

Hi. I am making an indie horror game and I want the player puts their mouse over the object, it makes it highlighted. That part is fine. But I can’t figure out why when I take my mouse off of the object, it goes back to a regular diffuse. Here is the code:

function Update()
{
   var hit : RaycastHit;
   var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
   if ( Physics.Raycast( ray, hit, 2 ) )
   {
      if ( hit.collider.gameObject.tag == "Highlightable" )
         hit.collider.gameObject.renderer.material.shader = Shader.Find ("Self-Illumin/Diffuse");
   		
   }
}

function Update()
{
var hit : RaycastHit;
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if ( Physics.Raycast( ray, hit, 2 ) )
{
if ( hit.collider.gameObject.tag == “Highlightable” )
{
hit.collider.gameObject.renderer.material.shader = Shader.Find (“Self-Illumin/Diffuse”);
}
else
{
hit.collider.gameObject.renderer.material.shader = Shader.Find (“Diffuse”);
}
}
}

Try that

EDIT: Now that i think it might not work, i can’t think straight right now

Pretty late, but I did it this way in a 2D game and it’s working:

public class MouseController : MonoBehaviour
	{
		private GameObject _actualObject;

		void Update()
		{
			Vector2 point = Camera.main.ScreenToWorldPoint(Input.mousePosition);

			RaycastHit2D hit = Physics2D.Raycast(point , Vector2.zero, 0f);

			if (hit.collider != null)
			{
				if (_actualObject == null)
				{
					_actualObject = hit.collider.gameObject;
					_actualObject.GetComponent<MouseBehaviour>().MouseEnter();
				}
				else if (_actualObject != hit.collider.gameObject)
				{
					_actualObject.GetComponent<MouseBehaviour>().MouseExit();
					_actualObject = hit.collider.gameObject;
					_actualObject.GetComponent<MouseBehaviour>().MouseEnter();
				}
			}
			else if (_actualObject != null)
			{
				_actualObject.GetComponent<MouseBehaviour>().MouseExit();
				_actualObject = null;
			}
		}
	}