Input.touchesでタップの状態を直接見てプレイヤーの操作に反映させるけど、UGUIのボタン上で押されたときには無視したいといったときにどうするか。

UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObjectを使う。

デフォルトだとマウス、タッチのフィンガーIDを渡せばその位置がボタン上かどうか判定できる:

using UnityEngine.EventSystems;

	for (int i = 0; i < Input.touchCount; ++i) {
		var touch = Input.touches[i];
		if (touch.phase == TouchPhase.Began) {
			if (!EventSystem.current.IsPointerOverGameObject(touch.fingerId)) {
				Debug.Log(touch.fingerId + ": タップ!");
			}
		}
	}

ボタン以外に表示しているUI、例えばTextのなどのRaycast Targetは切っておくこと。