メインコンテンツまでスキップ

ボタン拡張コンポーネント

AchButtonCooldownAchButtonHoldは既存のButtonコンポーネントに追加で付ける拡張コンポーネントです。 両コンポーネントとも同じGameObjectにButtonがある必要があります。

AchButtonCooldown

クリック直後にボタンを無効化し、指定された時間が経過すると再び有効化します。 残り時間をラベルに表示するカウントダウン機能も内蔵されています。

Inspectorフィールド

フィールド説明
Cooldownクリック後、次のクリックまでの最小待機時間(秒)。デフォルト値 1
Show Countdown残りクールダウン時間をラベルに表示するかどうか
Countdown Labelカウントダウンを表示するTextコンポーネント (任意)
On Cooldown Startクールダウンが開始されたときに発火するUnityEvent
On Cooldown Endクールダウンが終了したときに発火するUnityEvent

API

メンバー説明
IsCoolingDown現在クールダウン中かどうか
StartCooldown()クールダウンを手動で開始。すでに進行中ならタイマーを再開始
ResetCooldown()クールダウンを即座にリセットしてボタンを再有効化

使用例

// スクリプトでクールダウンを直接制御
var cooldown = GetComponent<AchButtonCooldown>();

// 外部条件でクールダウン開始 (例: サーバー応答までロック)
cooldown.StartCooldown();

// サーバー応答受信後に即座に解除
cooldown.ResetCooldown();

// 現在のクールダウン状態を確認
if (!cooldown.IsCoolingDown)
Debug.Log("ボタン使用可能");

InspectorでOn Cooldown Startイベントにローディングスピナー有効化関数を、 On Cooldown Endイベントにスピナー無効化関数を接続すれば、 追加コードなしで視覚フィードバックを実装できます。


AchButtonHold

ボタンを長押しすると指定された間隔でイベントを繰り返し発火させます。 ボリューム調整や数量増減のように、押し続けている間に値を連続的に変更する際に便利です。

Inspectorフィールド

フィールド説明
Initial Delay最初の繰り返しイベント発火までの初期待機時間(秒)。デフォルト値 0.5
Repeat Interval初期ディレイ後、各繰り返しイベント間の間隔(秒)。デフォルト値 0.1
On Hold Fire繰り返し発火時に実行されるUnityEvent

API

メンバー説明
IsHolding現在ボタンを押している状態かどうか

使用例

ボリュームスライダー増減ボタンへ適用する例です。

// VolumePlusButton GameObjectにAchButtonHoldを付け、
// On Hold Fireイベントに以下のメソッドを接続します。

public void IncreaseVolume()
{
AudioManager.Volume = Mathf.Clamp01(AudioManager.Volume + 0.05f);
}
[Button — ボリューム +]
└── [AchButtonHold]
Initial Delay : 0.5
Repeat Interval : 0.1
On Hold Fire → IncreaseVolume()

ボタンを押すと0.5秒後から0.1秒間隔でIncreaseVolume()が繰り返し呼び出されます。


2つのコンポーネントを併用

AchButtonCooldownAchButtonHoldは互いに独立しており、同じボタンに併せて付けることができます。

[Button GameObject]
├── Button
├── AchButtonCooldown (クリック後2秒クールダウン)
└── AchButtonHold (長押しで繰り返し発火)

関連ドキュメント