Сортировка списка игровых объектов с использованием любого алгоритма сортировки - PullRequest
0 голосов
/ 24 мая 2018

Я хочу преобразовать этот сценарий, чтобы выполнить сортировку кода с использованием любого алгоритма сортировки, например, быстрой сортировки, сортировки по пузырькам, сортировки выделения и т. Д.

Есть ли способ заменить

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);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...