FC2ブログ
    05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】ボタンを押すと一定時間押せなくなるボタン。カウントダウンもつけてみたよ 

    こんにちは。坂内っす。

    今日は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)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/559-9ca9e00b
    この記事にトラックバックする(FC2ブログユーザー)