C# 第二个用于循环isn';没有在我的更新中运行

C# 第二个用于循环isn';没有在我的更新中运行,c#,unity3d,C#,Unity3d,update()中的if语句有2个for循环,但它只在if条件激活后运行第一个for循环,我不知道为什么 我正在为unity中的路径优化构建代码。目前,我必须找出穿过节点/点/位置的路径,这些节点/点/位置具有特定的位置数组,索引是路径应该遵循的顺序。重复2个节点之间的一些路径,EX:A到B和B到A是考虑相同的路径,并且会增大最终呈现的AB AB的宽度。所以我试着将位置数组分成两个不同的数组,以便比较这对节点(或者我们可以说是直线)是否重复。我在update()中的if语句中遇到了一个问题 第一

update()中的if语句有2个for循环,但它只在if条件激活后运行第一个for循环,我不知道为什么

我正在为unity中的路径优化构建代码。目前,我必须找出穿过节点/点/位置的路径,这些节点/点/位置具有特定的位置数组,索引是路径应该遵循的顺序。重复2个节点之间的一些路径,EX:A到B和B到A是考虑相同的路径,并且会增大最终呈现的AB AB的宽度。所以我试着将位置数组分成两个不同的数组,以便比较这对节点(或者我们可以说是直线)是否重复。我在update()中的if语句中遇到了一个问题

第一个应该对原始数组进行排序,以便以后进行比较。第二个只是为了测试第一个是否完成了他们的工作。还没有比较。但是,在点击play并满足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]);
        }
    }
if(l>0)//当我们选择任何预设进程时激活
{

对于(int n=0;n您检查过您的统一性吗?

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

正确的代码应该如下所示:

var floats = new float[100];

for (var i = 0; i < floats.Length - 1; i++)
{
    var f1 = floats[i];
    var f2 = floats[i + 1];
}
var浮动=新浮动[100];
对于(变量i=0;i
现在,Unity在错误恢复下一步时有一个
行为,因此很可能发生了错误,但您没有看到它(您是否关闭了控制台中切换错误的红色图标?)


此外,对于某些情况,只有您知道(您没有发布整个上下文),它可以在您更改程序的某些状态后工作一次。

索引永远不能是`==array.Length`甚至更小
n+1
,因此控制台中应该存在异常!这正是问题所在!确实有一个错误异常显示数组外的索引请求数组中的第n+1个!谢谢!