Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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# 运行时无休止的循环错误_C#_Arrays_Unity3d_Infinite Loop - Fatal编程技术网

C# 运行时无休止的循环错误

C# 运行时无休止的循环错误,c#,arrays,unity3d,infinite-loop,C#,Arrays,Unity3d,Infinite Loop,我试图在这个程序中创建一个带有“立方体”标签的三维游戏对象数组 当我创建数组cb时,多维数据集的名称顺序混乱(每个多维数据集的名称对应于其在复合unity 3d多维数据集中的位置,例如:Cube000、Cube102)。因此,我不得不对它进行分类 我试图创建一个排序方法(我知道它效率不高),每次运行它,我都会得到一个无休止的循环,Unity停止响应 代码的第二部分旨在用数组cb的有序元素填充3d数组。我怀疑这是问题所在,但请随时检查 另外,作为旁注,主立方体是空心的,因此只有26个小立方体,而不

我试图在这个程序中创建一个带有“立方体”标签的三维游戏对象数组

当我创建数组cb时,多维数据集的名称顺序混乱(每个多维数据集的名称对应于其在复合unity 3d多维数据集中的位置,例如:Cube000、Cube102)。因此,我不得不对它进行分类

我试图创建一个排序方法(我知道它效率不高),每次运行它,我都会得到一个无休止的循环,Unity停止响应

代码的第二部分旨在用数组cb的有序元素填充3d数组。我怀疑这是问题所在,但请随时检查

另外,作为旁注,主立方体是空心的,因此只有26个小立方体,而不是27个。不管怎样,为什么我会有一个无休止的循环

    using UnityEngine;
    using System.Collections;

    public class CubeArrayLoop : MonoBehaviour {

    public GameObject[,,] cubes = new GameObject[3, 3, 3];


    public void Start(){
        //initialize array of Cube GameObjects
        GameObject[] cb = new GameObject[26];
        cb = GameObject.FindGameObjectsWithTag("Cube");
        //sort array of Cube GameObjects
        for (int p = 1; p < cb.Length; p++) {
            GameObject first = cb [0];
            GameObject current = cb [p];
            GameObject replacer;
            if (current.name.CompareTo (first.name) < 0) {
                replacer = first;
                first = current;
                current = replacer;
                p = 1;
            }
        }

        //Debug.Log (cb);

        //fill class variable cubes with cb objects in depth, row, col order
        int count = 0;
        for (int d =0; d < 3; d++) {
            for (int r = 0; r < 3; r++) {
                for (int c =0; c < 3; c++) {
                    if (!(d == 1 && r == 1 && c == 1)) {
                        cubes[d, r, c] = cb[count];
                        count += 1;
                    }
                    else{
                            cubes[d, r, c] = null;
                        }

                }
            }
        }

        //Debug.Log(cubes[1,2,1]);

    }

}
使用UnityEngine;
使用系统集合;
公共类cuberrayloop:单行为{
公共游戏对象[,]立方体=新游戏对象[3,3,3];
公开作废开始(){
//初始化立方体游戏对象数组
GameObject[]cb=新游戏对象[26];
cb=GameObject.FindGameObjectsWithTag(“多维数据集”);
//立方体游戏对象的排序数组
对于(int p=1;p
为这类工作编写自己的排序例程不是一个好主意,尤其是如果您不知道如何高效地完成这项工作。NET提供了很多很好的分类方法。我鼓励您学习如何实现排序例程,但要将其作为一个项目来完成

    using System.Collections.Generic;

    class GameObjectComparer : IComparer<GameObject>
    {
        public int Compare(GameObject left, GameObject right)
        {
            return left.Name.CompareTo(right.Name);
        }
    }

    //sort array of Cube GameObjects
    Array.Sort(cb, new GameObjectComparer());
使用System.Collections.Generic;
类GameObjectComparer:IComparer
{
公共整数比较(游戏对象左,游戏对象右)
{
返回left.Name.CompareTo(right.Name);
}
}
//立方体游戏对象的排序数组
Sort(cb,newgameObjectComparer());

这是因为您排序中的
p=1
。您没有正确地实现排序例程,为什么不使用内置的
Array.sort()
,而不是尝试运行自己的排序例程?确保使用
unity3d
标记。