使用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;
}
uj5u.com熱心網友回復:
我認為它沒有最短時間,它只是等到達到一定數量后再等待。如果你愿意,你可以一次添加多個硬幣。我通常盡量不去弄亂這些東西,而不是弄亂硬幣,我只會弄亂它顯示的價值。你可以有一個腳本來保存硬幣的數量并根據時間步長增加/減少它。像這樣的東西:
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)為使其具有緩出效果或任何您想要的值。(我沒有測驗這段代碼。)
uj5u.com熱心網友回復:
@JeffRSon 在評論中提供了這個宣告,我相信它回答了我的問題:
“由于協程的性質,這應該取決于實際的幀速率,這也表示可能的最短時間。”
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533271.html
上一篇:為什么我的unity2d專案中的rigidBody.velocity不是很準確?
下一篇:移動到原始位置
