【Unity】ボタンを押下させる間隔を制限する【連打防止】
ボタン押下時にデータをリストで取得するなどの重めの通信を走らせてたりすると、連打制限したいなって時ありますよね 絶対連打する人いるし....
最低限で簡単な実装ですが、今後も使いまわせそうなので載せておきます
アレンジして使っていきましょう
// ボタン押下許可フラグ private bool isPushReloadButton = false; // ボタンが押されてから次にまた押せるまでの時間(秒) private TimeSpan allowTime = new TimeSpan(0, 0, 3); // 前回ボタンが押された時点と現在時間との差分を格納 private TimeSpan pastTime; void Update () { // 3秒後にボタン押下を許可 if (isPushReloadButton) { pastTime = DateTime.Now - this.reloadTime; if(pastTime > allowTime){ isPushReloadButton = false; } } } //ボタンイベント public void OnClickButton () { if ( isPushReloadButton ) return; isPushReloadButton = true; // ここに通信処理などを書く //現在の時間をセット this.reloadTime = DateTime.Now; }
もちろんですが、端末の時間を利用して秒をカウントしているので
動作が重い端末だと時間が変わってしまうのかも
そこは要検証ですが、ボタン連打制限ならアバウトでもきっとだいじょうぶでしょ