Должно решиться просто. Смотрим пост выше и применяем первую функцию. Заменяем:
if (Input.GetMouseButtonDown(0) && _GUILayer.HitTest(Input.mousePosition) == null) {
на
if (Input.GetMouseButtonDown(0) && _GUILayer.HitTest(Camera.main.WorldToScreenPoint (Input.mousePosition)) == null) {
UPD:
Хотя только сейчас понял что не прав... наверное из-за того что голова болит... возможно стоит инвертировать ось Y у мыши. Т.е.:
Vector2 mp = Input.mousePosition;
mp.y = Screen.height - mp.y;
if (Input.GetMouseButtonDown(0) && _GUILayer.HitTest(mp) == null) {
Сам бы я пошел другим путем, я бы проверил попадает ли mp в Rect области GUI, т.е. (new Rect(100, 100, 200, 200)).Contains(mp);.