第二个for循环未在我的更新中运行

时间:2019-10-20 07:01:10

标签: c# unity3d

update()中的此if语句具有2个for循环,但仅在激活if条件后才运行第一个,而且我不知道为什么。

我正在构建用于统一优化路径的代码。目前,我必须找出带有一定位置数组的,跨越节点/点/位置的路径,索引是该路径应遵循的顺序。重复两个节点之间的某些路径,例如:A到B和B到A被认为是相同的路径,并且应加厚最终渲染的线AB的宽度。因此,我尝试将位置数组整理为2个不同的数组,以比较是否重复了一对节点(或可以说是线对)中的任何一个。而且我在update()中的if语句中遇到了一个问题。

第一个应该整理出原始数组以供以后比较。第二个仅用于测试第一个是否完成任务。暂无比较。但是,点击播放并满足if语句后,我可以在第一个中看到所有Debug.log,一切正常,排序正常,而第二个根本不输出任何内容。

我尝试注释掉第一个,然后第二个将运行。 我尝试将第二个语句放在if语句之后,并且在不注释第一个语句的情况下,第二个语句将不运行。 我试图将第二个放在第一个之前,在if语句中,第二个将运行,而第一个则不会。

所以我认为这可能是某种语法错误,还是我使用的if语句错误?请帮忙。

    if (l > 0)//activate when we choose any preset processes
    {


        for (int n = 0; n <= positions.Length; n++)//this loop will sort all the pos1 and pos 2 into array for current frame
        {
            curPos_1 = positions[n];//current position of node 1
            curPos_2 = positions[n + 1];
            Debug.Log("CURPOS_1 of line number " + n + " is " + curPos_1);
            Debug.Log("CURPOS_2 of line number " + n + " is " + curPos_2);
            flag[n] = 0;

            Pos_1[n] = curPos_1;
            Pos_2[n] = curPos_2;
            Debug.Log("POS_1 array of line number " + n + " is " + Pos_1[n]);
            Debug.Log("POS_2 array of line number " + n + " is " + Pos_2[n]);
        }
        for (int o = 0; o <= positions.Length; o++)
        {
            Debug.Log("flag of number " + o + " is " + flag[o]);
        }
    }

如前所述,所有for循环都应打印一些内容。不只是其中之一。

1 个答案:

答案 0 :(得分:2)

您是否已检查Unity Console Window

在第一个循环中,您获得下一个项目,但其条件最终将失败,即,关闭一个

正确的代码应如下所示:

var floats = new float[100];

for (var i = 0; i < floats.Length - 1; i++)
{
    var f1 = floats[i];
    var f2 = floats[i + 1];
}

现在,Unity的行为为ON ERROR RESUME NEXT,因此很可能发生了一个错误,但是您没有看到它(您是否关闭了红色图标以在控制台中切换错误?)。 / p>

此外,对于某些您仅了解的条件(您未发布整个上下文),更改了程序的某些状态后,它可能会工作一次。