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库只允许您拥有自定义比较器。