使用yield return new WaitForSeconds(waitTime);
在IEnumerator中,除了0之外,最短的等待时间是多少?我尝试过使用浮点数,并尝试将waitTime设置为低至0.00001f,但我不确定是否存在限制?
我的目的是让玩家的硬币一次加一个单位,所以计时器是“满的”而不是即时的。我试着搜索,但我似乎找不到WaitForSeconds的最短限制是什么的答案,所以如果有人知道我会非常感谢这个答案。
此外,我的代码如下,如果任何人有任何输入,我可以加快这一过程,而不使它即时,因为它只是不够快,玩家不得不坐了一会儿等待硬币被添加到米在游戏结束.
IEnumerator AddCoins()
{
yield return new WaitForSeconds(1);
while (userGainedCoins > 0)
{
if (addingSoundPlaying == false)
{
addingSound.Play();
addingSoundPlaying = true;
}
if (userGainedCoins == 1)
{
addingSound.Stop();
}
userCoins += 1;
userGainedCoins -= 1;
PlayerPrefs.SetInt("User Coins", userCoins);
yield return new WaitForSeconds(waitTime);
}
addingSoundPlaying = false;
}
2条答案
按热度按时间von4xj4u1#
“我觉得它没有最低时间限制,就是等到一定的数量再等,如果愿意的话,可以一次加多个币,我一般都尽量不去折腾这种东西,与其折腾币,我只会弄乱它显示的值。你可以有一个脚本,保存硬币的数量,并根据时间步增加/减少它。大概是这样的:
你可以直接设置金额,然后忘记它,它可以处理获得和失去的硬币。你也可以把change值改为
int change = Mathf.CeilToInt(Mathf.Abs(coins - displayCoins) * Time.deltaTime)
,使它有一个缓和的效果,或者你想要的任何东西。(我没有测试这段代码。)scyqe7ek2#
@JeffRSon在评论中提供了这一声明,我相信这回答了我的问题:
“由于协程的性质,这应该取决于实际的帧速率,这也意味着最短的时间可能。”