以前Unityに慣れていない方に対応方法を聞かれたことがあったのと、自分用のメモとして記載しておきます。
Buttonの非活性
uGUIのButtonはInteractableでボタンの活性、非活性を変更できます。
その際Transitionの設定で非活性状態のときのColorをDisabled Colorで設定できます。
ただ本体画像の色味や透明度に手を加えたくない場合もあると思います。
またボタンが有効ではないが、押したときに有効ではない旨のダイアログを出したい場合も多いのでそういったときはInteractableを有効なままにする必要があります。
マスク対応
Imageオブジェクトを作成し、ボタンと同じ画像をアタッチしてのカラーを黒にして透明度を少し下げればいい感じのマスクになります。
Imageの表示優先度をボタンより高くし、同じ大きさ・位置にすれば上にのっかる形になります。
あとはImageを参照してSetActiveで切り替えるだけです。
RaycastTargetをOnにすれば当たり判定がついてボタンをタップすることができなくなりますし、Offにすればボタンのタップは生きた状態になるので、内部で状態に応じて処理を切り替えれば活性・非活性それぞれの処理を行えます。