2015-09-16 32 views
0

我试图在统一游戏(使用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 =“钱:”发生+钱;部分。所以需要修复。

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

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

+0

有什么你得到的错误?你的计时码在哪里? – Enigmativity

+0

我得到的确切的错误是NullReferenceException – jon

+0

你的代码中的'showCurrency'实例化的地方? – Enigmativity

回答

0

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

首先,timeStamp -= Time.time从您存储时间的每一帧中减去当前时间(它实际上是一个非常小的数字)。当你拥有了它,试试if语句改变你的第二个不等式检查,而不是检查平等: if (timeStamp <= 0.0F)

或者,你的更新()函数可以简化为这样的事:

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*/ 
    } 
} 
+0

不要将反斜杠放在大块代码上,高亮显示它,并按下工具栏上的“{}”按钮。 –

+0

但按下该按钮只是简单地用反引号包装光标..? – TheAmazingFedex

+0

我还想知道如果更新方法是最好的方法来做到这一点,或者如果我应该使用FixedUpdate或甚至初始化布尔值,然后使用LateUpdate来运行代码。或者我应该放弃整个Time.time的想法并切换到使用tick来减少时间? – jon