首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除了0外,最短的WaitForSeconds时间是多少?

除了0外,最短的WaitForSeconds时间是多少?
EN

Stack Overflow用户
提问于 2022-11-13 14:02:00
回答 1查看 43关注 0票数 0

使用yield return new WaitForSeconds(waitTime);

在IEnumerator中,除了0以外,最短的等待时间是多少?我尝试过使用浮点数,并尝试过低到0.00001f的waitTime,但是我不确定是否有限制?

我的目的是让玩家的硬币一次增加一个单位,所以计价器是“装满”而不是即时的。我尝试过搜索,但似乎找不到WaitForSeconds最短限制的答案,所以如果有人知道,我会非常感激的。

此外,我的代码如下所示,如果有人对我如何在不让它即时的情况下加快进程有任何意见,因为它只是不够快,玩家不得不在游戏结束时等待硬币被添加到计价器上。

代码语言:javascript
运行
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-13 14:28:53

我认为它没有最小的时间,它只是等待直到它达到一定的数量,然后等待。如果你想要的话,你可以一次只加几个硬币。我通常尽量不弄乱这些东西,而不是弄乱硬币,我只会弄乱它所显示的价值。您可以有一个脚本,它保存硬币的数量,并根据时间步骤增加/减少硬币的数量。就像这样:

代码语言:javascript
运行
复制
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)的内容,以使其具有轻松的效果,或者您想要的任何东西。(我没有测试这个代码。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74421688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档