【ハルシオンブログ】ボタンを押すと一定時間押せなくなるボタン。カウントダウンもつけてみたよ
こんにちは。坂内っす。
今日はUnityでこんな感じの事をしたい時の方法。

ちょうど今作ってるゲームで「スキルを使用するとクールダウン中はスキルが再使用できない」的なことを作ってたので、紹介です。
まずは、CanvasにImageを置き、Buttonコンポーネントもつけます。
Imageの「Image Type」をFilledにして、「Fill Method」うぃRadial360にしておきます。

ついでに、残り時間を表示するTextも置いておきました。
んで、コードはこちら。
(いつも通り汚いコードですがあしからず)
[Script20181203.cs]
①ボタンを押した時にcountTimeをセット。
②Updateで1秒に1回、以下の処理をする。
countTimeが0じゃない限り-1をして、秒数を表示。
とともに、ImageのfillAmountを指定。
また、カウント中はボタンのinteractableをFalseにすることで、ボタンを押せないように制御
やっているのはこれだけです。
これをベースに色々といじると面白いボタンとか作れそうですね!
ってことで、今日はここまで!あでゅ~ノシ
今日はUnityでこんな感じの事をしたい時の方法。

ちょうど今作ってるゲームで「スキルを使用するとクールダウン中はスキルが再使用できない」的なことを作ってたので、紹介です。
まずは、CanvasにImageを置き、Buttonコンポーネントもつけます。
Imageの「Image Type」をFilledにして、「Fill Method」うぃRadial360にしておきます。

ついでに、残り時間を表示するTextも置いておきました。
んで、コードはこちら。
(いつも通り汚いコードですがあしからず)
[Script20181203.cs]
using UnityEngine;
using UnityEngine.UI;
public class Script20181203 : MonoBehaviour {
[SerializeField]
GameObject objButton; // Image+Buttonのオブジェクトをアサイン
[SerializeField]
Text lblText; // 残り時間を表示するTextオブジェクトをアサイン
Image imgButton;
Button btnButton;
// 何秒でボタンが再アクティブになるか
const int COUNT = 10;
int countTime;
// ただのタイマー
float timer;
private void Awake() {
imgButton = objButton.GetComponent<Image>();
btnButton = objButton.GetComponent<Button>();
}
/// <summary>
/// ボタンを押した時の処理
/// </summary>
public void OnClickButton() {
countTime = COUNT;
}
private void Update() {
timer += Time.deltaTime;
// 毎秒処理
if(timer > 1f) {
timer = 0f;
if(countTime > 0) {
countTime--;
lblText.text = countTime.ToString();
imgButton.fillAmount = 1 - (float)countTime / (float)COUNT;
btnButton.interactable = false;
} else {
lblText.text = "";
btnButton.interactable = true;
}
}
}
}
①ボタンを押した時にcountTimeをセット。
②Updateで1秒に1回、以下の処理をする。
countTimeが0じゃない限り-1をして、秒数を表示。
とともに、ImageのfillAmountを指定。
また、カウント中はボタンのinteractableをFalseにすることで、ボタンを押せないように制御
やっているのはこれだけです。
これをベースに色々といじると面白いボタンとか作れそうですね!
ってことで、今日はここまで!あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】今週もちょこちょことC#の話・・・ | 【ハルシオンブログ】拡張メソッド使ってますか? »
コメント
| h o m e |