Giving Delay to a button

Hello guys first of all Im pretty noob about scripting and I want to give some delay to my button Im trying to make an incremention game like adventure capitalist and I want to give different delays to button and then with some upgrades those delay gonna be reduced but I couldn’t make that delay thing here’s my code

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;

public class MoneyClick : MonoBehaviour {

    public Text moneyDisplay;
    public int money = 0;
    public int moneyperClick = 1;

 

    void Start()
    {
        Invoke("ClickDelayMoney", 5);
    }

   
    void ClickDelayMoney()
    {
        moneyDisplay.text = "Total Money: " + money;
    }


    public void Clicked()
    {
        money += moneyperClick;

    }
}

and also how can I show the progress on my button? (I saw some posts about delay but I couldn’t do it with those posts)

I personally probably wouldn’t use invoke. Because you don’t have much control over it. But, to at least get you going, the issue is simple. You’re calling invoke in start. Which means it starts and runs once after 5 secs. If you’re going to use invoke, you have to call it after the click of a button.

Then you should probably add the money in whatever method is called by invoke.

Now, this of course depends on if you want to allow the player to click repeatedly, because if you want them to tap once and then the button goes on a cooldown, you’ll have to make the button non-interactable until 5 secs has passed. So you would have to handle that also.

Can you give me an example if its ok it would be perfect for got that thing