「クリックをそもそも受け付けない」
「クリックされた処理の中で条件分岐」
「画面の一番上にクリックを防ぐオブジェクトを置く」
の3パターンが考えられます。
クリックをそもそも受け付けない
クリックを許可するフラグにより、クリックした時の処理をそもそも発生させないようにする方法です。
(UGUIの場合、Buttonのinteractableをオフにする等も同じ理論)
C#
1void Update () {
2 //クリックされた時 かつ lockStateがLockedではない時だけ実行
3 if (Input.GetMouseButtonDown(0) && Cursor.lockState != CursorLockMode.Locked) {
4 OnClick(); //クリックされた時の処理
5 }
6}
クリックされた処理の中で条件分岐
クリックを許可するフラグを作っておき、if文で分岐すればOKです。(UnityEvent系を使うならこちら)
C#
1//クリックされた時にOnClickを呼び出すようにしておく
2void OnClick() {
3 if (Cursor.lockState == CursorLockMode.Locked) {
4 return; //lockStateがLockedだったら以後の処理をしない
5 }
6
7 //以下、クリックされた時の処理
8}
画面の一番上にクリックを防ぐオブジェクトを置く
UGUIやレイキャストによるクリックの場合、画面の一番上(手前)にクリックを受け取るオブジェクト(透明なImage等)を置いておくと、その下にあるオブジェクトにクリックが届かなくなります。それを応用します。
あんまり良い方法ではないのですが、「シーンに入った直後から一定時間だけ全てクリックさせたくない」等ではアリかもしれません。
(クリック可不可が頻繁に切り替わる場合は上記のフラグ管理の方がいいです)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。