Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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
C# 为什么内部有两个循环的ienumerator只工作一次?_C#_Unity3d_Unity5 - Fatal编程技术网

C# 为什么内部有两个循环的ienumerator只工作一次?

C# 为什么内部有两个循环的ienumerator只工作一次?,c#,unity3d,unity5,C#,Unity3d,Unity5,首先: StartCoroutine(moveStuff()); 然后: IEnumerator moveStuff() { for(int i=0;i0.1f) { 计数器++; endPos=allLines[i].GetComponent().EndVector; Vector3 startPos=allLines[i].GetComponent().GetPosition(0); Vector3 tempPos=Vector3.Lerp(起始位置、结束位置、计数器/500f*速度);

首先:

StartCoroutine(moveStuff());
然后:

IEnumerator moveStuff()
{
for(int i=0;i0.1f)
{
计数器++;
endPos=allLines[i].GetComponent().EndVector;
Vector3 startPos=allLines[i].GetComponent().GetPosition(0);
Vector3 tempPos=Vector3.Lerp(起始位置、结束位置、计数器/500f*速度);
所有行[i].GetComponent().SetPosition(1,tempPos);
instancesToMove[i].transform.position=
矢量3.向(起始位置、结束位置、计数器/25f*速度)移动;
//走向目的地
收益返回空;
}
}
}
在第一次使用断点进行迭代时,我可以看到allLines和instancestoMove中的第一个对象正在移动。但是,它只是显示列表中的所有其他对象,而不是移动下一个对象,就像它们已经被移动一样

列表中的其余对象已显示在其结束位置。 它们没有像第一圈那样的运动


allLines和instancesToMove都是列表类型。

也许您应该在while语句之前将计数器重置为零。 否则计数器/25f*的速度会无限制地增长,并且对于后续的行来说会越来越高

IEnumerator moveStuff()
    {
        for (int i = 0; i < allLines.Count; i++)
        {
            while (Vector3.Distance(instancesToMove[i].transform.position, endPos) > 0.1f)
            {
                counter++;
                endPos = allLines[i].GetComponent<EndHolder>().EndVector;
                Vector3 startPos = allLines[i].GetComponent<LineRenderer>().GetPosition(0);
                Vector3 tempPos = Vector3.Lerp(startPos, endPos, counter / 500f * speed);

                allLines[i].GetComponent<LineRenderer>().SetPosition(1, tempPos);

                instancesToMove[i].transform.position =
                    Vector3.MoveTowards(startPos, endPos, counter / 25f * speed);

                //move towards destination
                yield return null;
            }
        }
    }