質問: 画面上にいろいろのボタンがあるのですが、一つの処理中に他のボタンを使用すると、 フリーズやバグの要因になるのではないかと思いました。 なので、処理中は他のボタンをタッチできないようにしたいのですが false; などをそれぞれのボタンに入れて処理中はイベントの無効にするように設定するのは ボタンが多い場合時間がかかりますので、 その他のボタンを一時的に無効にする方法はありますでしょうか
回答: 例えばの話を交えて回答します。 たとえばButton用のスクリプト(ButtonSample.cs)があるとします。 またこれとは別でデータを管理するスクリプト(DataManager.cs)があるとします。 ButtonSample.csにボタン処理を実行するメソッドがあるとし、 ``` public void Execute(object param){ if( DataManager.instance.waitButton ) return; DataManager.instance.waitButton = true; /* ここにボタンの処理 */ } ``` 上記のように実装されてるものとします。 > > DataManager.instance.waitButton > > > 上記は共通のボタンフラグとして管理しているものとし、 実行されたタイミングで真を代入します。 このフラグが真である間はこのフラグが設定されているメソッドは全て実行不能になります。 このようにひとつのフラグをうまくコントロールして使えば 質問者さんが求めているものは実装できると思います。 > > false; などをそれぞれのボタンに入れて処理中はイベントの無効にするように設定するのは > > ボタンが多い場合時間がかかりますので、 > > その他のボタンを一時的に無効にする方法はありますでしょうか > > > この部分をボタンひとつひとつ、ではなくひとつの変数で全部管理しちゃおう!という考えです。 ※その変わりですが、ちゃんとフラグを解除する処理は所々にいれる必要はあります。 コールバックをうまく使って一つにまとめれないことはないですが・・・。