增量游戏的冷却时间

时间:2015-09-16 02:08:30

标签: c# timer unityscript

我试图制作一个统一的游戏(使用c#),而我想要完成的游戏几乎与游戏冒险资本家所做的相同。当你点击其中一家公司时,会有一个"冷却时间"计时器。我把它放在引文中是因为你没有得到钱,直到计时器结束。我查看了其他建议的问题并设法创建了以下代码

public UnityEngine.UI.Text showCurrency;
public int money = 0;
public int moneyPerClick = 1;
public float timeToCollect = 3.0F;
private float timeStamp;
private bool buttonClicked;    

void Start()
{
    timeStamp = Time.time + timeToCollect;
}

void Update()
{
    showCurrency.text = "Money: " + money;
    if(buttonClicked && timeStamp > 0.0F)
    {
        timeStamp -= Time.time;

    }
    if (timeStamp == 0.0F)
        {
            money += moneyPerClick;
        }
}

public bool Clicked()
{
    buttonClicked = true;
    return buttonClicked;        
}

我目前得到1个错误,但是在我添加了showCurrency.text =" Money:"之后就开始了。 +钱;部分。所以这需要修复。

据我所知,代码无效。我没有使用图像填充的冷却效果(这将是另一天的问题)所以我实际上无法看到计时器是否正在倒计时,但我想我可以进行调试。记录并有一个system.out行来测试它。另一件不起作用的是我没有将新的金额显示在屏幕上。

这段代码是初学者最好的猜测它是如何布局的,这是我所处的位置。如果看起来我使用的方法不对,那可能是因为我。任何进一步的信息,至少指出我正确的方向将不胜感激。

1 个答案:

答案 0 :(得分:0)

Unity每次调用Update()方法。因此,如果您将游戏设置为30 FPS,则Update()将每秒调用30次。

首先,timeStamp -= Time.time从每个帧的存储时间中减去当前时间(它真的很快就变成了一个真正的小数字)。如您所愿,尝试将第二个if语句更改为不等式检查,而不是检查是否相等: if (timeStamp <= 0.0F)

或者,您的Update()函数可以简化为:

void Update()
    showCurrency.text = "Money: " + getMoney();/*Make money into a property with a getter and setter, so that it will be easily changeable at run-time*/
    if(buttonClicked && (Time.time >= timeStamp)) 
    {
        timeStamp = (Time.time + timeToCollect);
        setMoney(getMoney() + moneyPerClick);
        buttonClicked = false; /*Reset your button to be clickable again*/
        /*You could also setup your setMoney() like setMoney(moneyPerClick), but that's not what you asked ;b*/
    }
}