using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class AISys : MonoBehaviour { public static AISys Instance = null; //工人AI数量 public int _workerNum = 2; //工人工作点 public Transform[] _workPoints; //工人移动点 public Transform[] _movePoints; //AI父物体 public Transform _AIPreant; //AI事故点 public Transform Pass1AccidentPoint; //Ai小地图图标父物体 public Transform _AIIconPreant; public AI_Worker[] _workerGroup; public bool[] pointIsUse; [Header("员工监测相机")] public Transform _workCheckCamera; public void Init() { Instance = this; //工作点与移动点赋值 _workPoints = new Transform[GameObject.FindGameObjectWithTag("WorkPointGroup").transform.childCount]; _movePoints= new Transform[GameObject.FindGameObjectWithTag("MovePointGroup").transform.childCount]; for (int i = 0; i < _workPoints.Length; i++) { _workPoints[i] = GameObject.FindGameObjectWithTag("WorkPointGroup").transform.GetChild(i).transform; } for (int i = 0; i < _movePoints.Length; i++) { _movePoints[i]= GameObject.FindGameObjectWithTag("MovePointGroup").transform.GetChild(i).transform; } //创建工人实例 _workerNum = _workPoints.Length; _workerGroup = CreatAIAtPoint("Prefab/Gongren_01", _workPoints, _workerNum, new Vector3(2, 2, 2), "Prefab/man"); //检查每个点位是否有人 pointIsUse = new bool[_movePoints.Length]; } public AI_Worker[] CreatAIAtPoint(string path,Transform[] points,int num,Vector3 scale,string iconPath= "") { AI_Worker[] workers=new AI_Worker[num]; for (int i = 0; i < num; i++) { GameObject go= Const.LoadPrefab(path, points[i].position, Vector3.zero, scale); go.transform.SetParent(_AIPreant); AI_Worker aI_Worker = go.AddComponent(); if (i < 10) { aI_Worker.ID = "0" + (i + 1); } else { aI_Worker.ID = (i + 1).ToString(); } workers[i] = aI_Worker; workers[i].PointIdenx = i; if (iconPath != "") { GameObject icon = Const.LoadPrefab(iconPath); icon.transform.SetParent(_AIIconPreant); icon.transform.GetChild(0).GetComponent().text = aI_Worker.ID; } } return workers; } public void Accident(int passIndex) { switch (passIndex) { case 1: int index = 0; index = Random.Range(0, _workerGroup.Length); _workerGroup[index].Accident(); Debug.Log(index); GameRoot.Instance.menuWnd.CheckPeople(index); //_workCheckCamera.position = _workerGroup[index].transform.position + new Vector3(0, 7, 5); //_workCheckCamera.LookAt(_workerGroup[index].transform); break; case 2: for (int i = 0; i < _workerGroup.Length; i++) { _workerGroup[i].isCheck = true; } break; } } public void ShowFangKuang(int index,bool b) { _workerGroup[index].isCheck = b; _workerGroup[index].transform.Find("FangKuang").gameObject.SetActive(true); } public void ResetWorker() { for (int i = 0; i < _workerGroup.Length; i++) { _workerGroup[i].isCheck = false; _workerGroup[i].isWorkOver = false; } } }