Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Unity 3d使用浮点数随时间循环_Loops_Unity3d_Delay - Fatal编程技术网

Loops Unity 3d使用浮点数随时间循环

Loops Unity 3d使用浮点数随时间循环,loops,unity3d,delay,Loops,Unity3d,Delay,我试着做一个游戏,每5秒你就能拿到钱。我尝试了调用重复的协同程序,在协同程序中,我可以向浮点值添加值,然后在5秒后再次向浮点值添加值,但它不起作用,它只会在没有延迟的情况下向浮点值添加值。请帮助 一个不起作用的例子: 另一个例子: 还有一个例子: 使用提供的三个代码片段很难说清楚您的代码在做什么,但您所说的您正试图完成的是可能的: 我试着做一个游戏,每5秒你就能拿到钱 协同程序为您提供了实现这一点的机制 下面是一个示例,说明了如何实现针对此问题的“while-loop”解决方案: 使用系统集合;

我试着做一个游戏,每5秒你就能拿到钱。我尝试了调用重复的协同程序,在协同程序中,我可以向浮点值添加值,然后在5秒后再次向浮点值添加值,但它不起作用,它只会在没有延迟的情况下向浮点值添加值。请帮助

一个不起作用的例子:

另一个例子:

还有一个例子:


使用提供的三个代码片段很难说清楚您的代码在做什么,但您所说的您正试图完成的是可能的:

我试着做一个游戏,每5秒你就能拿到钱

协同程序为您提供了实现这一点的机制

下面是一个示例,说明了如何实现针对此问题的“while-loop”解决方案:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共阶层赚钱五:单一行为
{
公共浮动货币=0;
公共浮动工资率=5;
public bool IsWorking=true;
支付前私人浮动时间=3;
私人浮动时间间隔pay=5;
私有void Start()
{
//你必须从某个地方开始你的合作
开始例行程序(赚钱时间(付款前时间、付款间时间));
}
公共IEnumerator赚钱(浮动初始延迟,浮动延迟)
{
//此wait语句有助于在循环启动时进行微调
返回新的WaitForSeconds(initialDelay);
//作为循环条件的变量允许您在需要时退出
(工作时)
{
//重要的是,把钱分配给班级
货币+=工资率;
//每次都会延迟内部循环的运行,从而将增加的钱隔开
产生返回新WaitForSeconds(延迟);
}
//如果您退出循环(IsWorking==false),则协同程序将退出
//如果你想重新开始,你需要重新开始。
}
}

你需要分享你的代码,以及你如何称呼它,并在别人给你一个好的评价之前发表评论answer@BugFinder那现在呢?这是一种多么复杂的方式。。好啊所以你是作为一个同事开始工作的。。没有明显的原因。。。它等待2秒,然后在不等待后每隔2秒调用money+10。。当然,你们只是丢掉了这份工作,去做“工资”,5f,5f@窃听器。。。以下是我尝试过的其他一些方法,您现在是否满意:这也取决于您从何处开始这些合作计划。。。。。。如果这在更新中。。
        StartCoroutine(Job(2.0f));


void salary()
    {
        money += 10;
    }
    private IEnumerator Job(float waitTime)
    {
        yield return new WaitForSeconds(waitTime);

        //After waitTime, you can use InvokeRepeating() for infinite loop infinite loop or you use a while(true) loop here
        InvokeRepeating("salary", 0.0f, 2.0f);
    }
 StartCoroutine(Job(2));


    private IEnumerator Job(float waitTime)
{
    while (true)
    {
            money += 10;
        yield return new WaitForSeconds(waitTime);

    }
        StartCoroutine(Job());


IEnumerator Job()
    {
        while (true)
        {
            yield return new WaitForSeconds(1);
            money += 10;

        }
    }