Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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#_Sorting_Unity3d - Fatal编程技术网

C# 使用任何排序算法对游戏对象列表进行排序

C# 使用任何排序算法对游戏对象列表进行排序,c#,sorting,unity3d,C#,Sorting,Unity3d,我想转换这个脚本,使代码排序使用任何排序算法,例如快速排序,冒泡排序,选择排序。。。等等 有什么方法可以取代它吗 instantiatedObjects = instantiatedObjects.OrderBy(go => go.name).ToList(); 并在示例中将排序方法更改为快速排序?是否有必要使用数组,或者像这样使用列表时,是否可以使其与快速排序和其他排序算法一起工作 该脚本将在场景中创建游戏对象的克隆,然后对其进行排序,然后销毁原始游戏对象,以便克隆将成为场景中唯一被排

我想转换这个脚本,使代码排序使用任何排序算法,例如快速排序,冒泡排序,选择排序。。。等等

有什么方法可以取代它吗

instantiatedObjects = instantiatedObjects.OrderBy(go => go.name).ToList();
并在示例中将排序方法更改为快速排序?是否有必要使用数组,或者像这样使用列表时,是否可以使其与快速排序和其他排序算法一起工作

该脚本将在场景中创建游戏对象的克隆,然后对其进行排序,然后销毁原始游戏对象,以便克隆将成为场景中唯一被排序的游戏对象

,

这是我的剧本

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEngine.UI;

namespace Assets {
    class Gameobjects : MonoBehaviour {
        public Button s_YourButton;
        [SerializeField]
        private GameObject[] deck;

        public List<GameObject> instantiatedObjects;

        void Start() {
            Button btn = s_YourButton.GetComponent<Button>();
            //Calls the TaskOnClick method when you click the Button
            btn.onClick.AddListener(TaskOnClick);
        }
        List<Vector3> vectorList = new List<Vector3>();

        void TaskOnClick() {
            Fill();
            instantiatedObjects = instantiatedObjects.OrderBy(go => go.name).ToList();
            for (int i = 0; i < instantiatedObjects.Count; i++) {
                instantiatedObjects[i].transform.position = vectorList[i];
            }
            string name = "1";
            string name1 = "2";
            string name2 = "3";
            string name3 = "4";
            string name4 = "5";

            GameObject go1 = GameObject.Find(name);
            GameObject go2 = GameObject.Find(name1);
            GameObject go3 = GameObject.Find(name2);
            GameObject go4 = GameObject.Find(name3);
            GameObject go5 = GameObject.Find(name4);
            //if the tree exist then destroy it
            if (go1 & go2 & go3 & go4 & go5) {
                Destroy(go1.gameObject);
                Destroy(go2.gameObject);
                Destroy(go3.gameObject);
                Destroy(go4.gameObject);
                Destroy(go5.gameObject);

            }
        }

        public void Fill() {
            vectorList.Clear();
            instantiatedObjects = new List<GameObject>();
            for (int i = 0; i < deck.Length; i++) {
                GameObject spawnedObject = Instantiate(deck[i]) as GameObject;
                instantiatedObjects.Add(spawnedObject);
                vectorList.Add(spawnedObject.transform.position);
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用UnityEngine;
使用UnityEngine.UI;
命名空间资产{
类游戏对象:单一行为{
公共按钮s_your按钮;
[序列化字段]
私人游戏对象[]牌组;
公共列表实例化对象;
void Start(){
Button btn=s_YourButton.GetComponent();
//单击按钮时调用TaskOnClick方法
btn.onClick.AddListener(TaskOnClick);
}
列表向量列表=新列表();
void TaskOnClick(){
填充();
实例化对象=实例化对象.OrderBy(go=>go.name).ToList();
for(int i=0;i
LINQ到对象。气泡排序和选择排序如何?我需要通过其他排序算法来完成这项工作。@HumaNSLayeR为什么?冒泡排序是出了名的最糟糕的排序算法之一。不管是哪种排序算法,它可以是任何一种,我有一个项目在为它工作,所以它需要使用不同类型的排序算法来对球进行排序。然后你必须实现你自己版本的
OrderBy()
将排序算法作为参数的函数。标准LINQ库只允许您拥有自定义比较器。