RaycastHit.textureCoord renderer problem

I'm using the script provided on the Unity website. http://unity3d.com/support/documentation/ScriptReference/RaycastHit-textureCoord.html

Except I change

if (renderer == null || renderer.sharedMaterial == null || renderer.sharedMaterial.mainTexture == null || meshCollider == null) return;

to just

if (renderer == null) { Debug.Log("No renderer!"); return; }

The object I'm testing on has a Mesh Collider and a texture on the renderer's material. The texture's format is set to RGB 24 bit. The problem is, only some part of the texture would return a renderer and allow me to change the pixel of the textuer, most of the time it returns null. The texture's "hit box" also seems to change each time I Play in Unity 3d, right now it looks like a triangle on the top part of the texture. What can be causing this?

this mesh not have mesh collider.
maybe box collider?