使用yield return new WaitForSeconds(waitTime);
在IEnumerator中,除了0以外,最短的等待时间是多少?我尝试过使用浮点数,并尝试过低到0.00001f的waitTime,但是我不确定是否有限制?
我的目的是让玩家的硬币一次增加一个单位,所以计价器是“装满”而不是即时的。我尝试过搜索,但似乎找不到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;
}
发布于 2022-11-13 14:28:53
我认为它没有最小的时间,它只是等待直到它达到一定的数量,然后等待。如果你想要的话,你可以一次只加几个硬币。我通常尽量不弄乱这些东西,而不是弄乱硬币,我只会弄乱它所显示的价值。您可以有一个脚本,它保存硬币的数量,并根据时间步骤增加/减少硬币的数量。就像这样:
public int coins = 100;
public int displayedCoins = 0;
private void Update() {
int change = Mathf.CeilToInt(300 * Time.deltaTime);
if (displayedCoins < coins)
displayedCoins = Math.Min(displayedCoins + change, coins);
else
displayedCoins = Math.Max(displayedCoins - change, coins);
}
有了这个,你就可以设定钱币的数量,然后忘记它,它可以和硬币的得失一起工作。您还可以将更改值更改为类似于int change = Mathf.CeilToInt(Mathf.Abs(coins - displayCoins) * Time.deltaTime)
的内容,以使其具有轻松的效果,或者您想要的任何东西。(我没有测试这个代码。)
https://stackoverflow.com/questions/74421688
复制相似问题