C# 第二个用于循环isn';没有在我的更新中运行
update()中的if语句有2个for循环,但它只在if条件激活后运行第一个for循环,我不知道为什么 我正在为unity中的路径优化构建代码。目前,我必须找出穿过节点/点/位置的路径,这些节点/点/位置具有特定的位置数组,索引是路径应该遵循的顺序。重复2个节点之间的一些路径,EX:A到B和B到A是考虑相同的路径,并且会增大最终呈现的AB AB的宽度。所以我试着将位置数组分成两个不同的数组,以便比较这对节点(或者我们可以说是直线)是否重复。我在update()中的if语句中遇到了一个问题 第一个应该对原始数组进行排序,以便以后进行比较。第二个只是为了测试第一个是否完成了他们的工作。还没有比较。但是,在点击play并满足if语句后,我可以在第一个中看到所有Debug.log,一切正常,排序正常,而第二个根本不打印任何内容 我尝试注释第一个,第二个将运行。 我试图将第二个放在if语句之外,在它之后,没有对第一个进行注释,第二个就不会运行。 我试着把第二个放在第一个之前,在if语句中,第二个将运行,第一个不会运行 所以我认为这可能是某种语法错误,或者我使用的if语句是错误的?请帮忙C# 第二个用于循环isn';没有在我的更新中运行,c#,unity3d,C#,Unity3d,update()中的if语句有2个for循环,但它只在if条件激活后运行第一个for循环,我不知道为什么 我正在为unity中的路径优化构建代码。目前,我必须找出穿过节点/点/位置的路径,这些节点/点/位置具有特定的位置数组,索引是路径应该遵循的顺序。重复2个节点之间的一些路径,EX:A到B和B到A是考虑相同的路径,并且会增大最终呈现的AB AB的宽度。所以我试着将位置数组分成两个不同的数组,以便比较这对节点(或者我们可以说是直线)是否重复。我在update()中的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个!谢谢!