我正在使用c#在Unity 5中制作游戏,我想知道Yield与Time.Deltatime。让我们说" Money"应该通过" x"每一秒,我应该使用
x[0]={}, x[1]={}
或只是使用
yield return new WaitForSeconds(1);
答案 0 :(得分:1)
Money += moneyModifier * Time.Deltatime;
必须按照您想要的方式调用每个帧,因为Time.Deltatime
仅提供自绘制最后一帧以来已经过去的时间。 (即,它必须放在Update()
中,并且每帧都必须调用。不是非常有利于资源。)
这种方法更适合作为协程实现。
public int Money;
public IEnumerator IncreaseMoney(int amount, float interval)
{
while(true)
{
Money += amount;
yield return new WaitForSeconds(interval);
}
}
//somewhere within this class
void Start()
{
//Start increasing the money by 50 every 2 seconds
StartCoroutine(IncreaseMoney(50, 2.0));
}
答案 1 :(得分:1)
你的第一个解决方案是每秒增加一次角色的钱,比如时钟的秒针。
假设您在游戏循环的update
逻辑中运行它,那么Time.Deltatime
的解决方案会不断增加玩家的资金,同样 1 金额每秒
(想想 Sim City / 城市中的金钱:Skylines 或英雄联盟中的金币)
如果你想让玩家的钱不断增加(比如经济战略游戏),那就选择第二种解决方案,如果你想让它每秒保持不变并且在两者之间上升一定的数量,那就去吧第一个解决方案。
[1] 的数量并不完全相同,因为WaitForSeconds(1)
最有可能等待至少 1秒,有时甚至会超过几毫秒。