Vector2 screenPos = Input.mousePosition;
Camera cam = NGUITools.FindCameraForLayer(gameObject.layer);
Vector3 worldPos = cam.ScreenToWorldPoint(screenPos);
Vector3 localPos = transform.worldToLocalMatrix.MultiplyPoint3x4(worldPos);
Bounds b = NGUIMath.CalculateRelativeWidgetBounds(transform, cam.transform);
float mx = ((float)(localPos.x + b.extents.x))/ (2.0F * b.extents.x) * transform.localScale.x;
float my = ((float)((localPos.y * -1F) + b.extents.y))/ (2.0F * b.extents.y) * transform.localScale.y;
return new UnityEngine
.Vector2(mx, my
);