using System.Collections; using System.Collections.Generic; using UnityEngine; using System; namespace BuildSystem { public class CarController : MonoSingleton { [Header("车辆生成位置")] public List birth = new List(); [Header("车辆预制体")] public Car[] carPrefabs; [Header("生成最大车辆数")] public int carNumber; [NonSerialized] public int number = 0; [Header("车辆创建时间")] public Vector2 createTime; [Header("40为标准速度")] public Vector2 speed; public List allCar = new List(); void Start() { birth.Add(new Vector2Int(0 , 2)); birth.Add(new Vector2Int(13, 3)); //birth.Add(new Vector2Int(13, 4)); } /// /// 开启创建车辆协程 /// public void StartCreateCar() { StartCoroutine(CreateCar()); StartCoroutine(ReduceCar()); } /// /// 创建车辆 /// /// IEnumerator CreateCar() { while (true) { yield return new WaitUntil(() => { return number < carNumber; }); yield return new WaitForSeconds(UnityEngine.Random.Range(createTime.x, createTime.y)); number++; GameObject car = Instantiate(carPrefabs[UnityEngine.Random.Range(0, carPrefabs.Length)].gameObject,transform); car.GetComponent().OpenMove(birth[UnityEngine.Random.Range(0, birth.Count)], UnityEngine.Random.Range(speed.x,speed.y)); allCar.Add(car.GetComponent()); } } /// /// 删减车辆协程 /// /// IEnumerator ReduceCar() { while (true) { yield return new WaitUntil(() => { return number > carNumber; }); yield return new WaitForSeconds(UnityEngine.Random.Range(createTime.x, createTime.y)); number--; int id = UnityEngine.Random.Range(0, allCar.Count - 1); Car car = allCar[id]; allCar.RemoveAt(id); Destroy(car.gameObject); } } public void ClearCar(Car car) { allCar.Remove(car); Destroy(car.gameObject); number--; } public void CarNumberChange(float num) { carNumber = (int)(num * 30) + 30; } } }