So im tryin to sort these arrays so they corispond with each other but im getting an error about static methods that i dont understand Do i need to create a static method or something? :/ Any help will be lovely. Im a new to coding so have mercy Here is the code Code (CSharp): using UnityEngine; using System.Collections; using System.Collections.Generic; public class PositionScript : MonoBehaviour { public List<GameObject> objects = new List<GameObject> (); public List<float> distances = new List<float> (); public GameObject[] carNames; private bool updateCars = true; void Update() { if (updateCars) { StartCoroutine(UpdateDistance()); } } IEnumerator UpdateDistance() { updateCars = false; yield return new WaitForSeconds(1.0f); distances.Clear (); foreach (GameObject obj in objects) { float dist = Vector3.Distance (gameObject.transform.position, obj.transform.position); distances.Add (dist); } distances.Sort (); float[] distance = distances.ToArray (); carNames = objects.ToArray (); carNames.Sort (distance, carNames); updateCars = true; } }
Line 37: Sort works without parameters (like line 33), but unless you provide a comparison method, you can't just stick parameters in it.
Ahhhh sorry i thaught i could sort the second list using the first list. In the end i managed to acheive what i was looking for with a slightly different approach. If this helps anyone for the begining of a 'race position' script then go ahead and grab it here is the code Code (CSharp): using UnityEngine; using System.Collections; using System.Collections.Generic; public class PositionScript : MonoBehaviour { public List<GameObject> objects = new List<GameObject> (); public List<float> carPositions = new List<float> (); private bool updateCars = true; void Update() { if (updateCars) { StartCoroutine(UpdateDistance()); } } IEnumerator UpdateDistance() { updateCars = false; yield return new WaitForSeconds(0.1f); carPositions.Clear (); foreach (GameObject obj in objects) { float dist = Vector3.Distance (gameObject.transform.position, obj.transform.position); carPositions.Add(dist); } carPositions.Sort (); updateCars = true; } } and the second script Code (CSharp): using UnityEngine; using System.Collections; public class CarIdentScript : MonoBehaviour { public int CurrentPosition; public string CarName; public GameObject RaceController; private PositionScript positionScript; void Start() { positionScript = RaceController.GetComponent<PositionScript> (); } void Update() { float dist = Vector3.Distance (RaceController.transform.position, gameObject.transform.position); CurrentPosition = Mathf.Abs(positionScript.carPositions.BinarySearch (dist)); } }