using UnityEngine; using AX.MessageSystem; using AX.TrackRecord; /// /// 删除物体,可用于清空场景物体,挂载在所有p物体上 /// 使用举例:MessageDispatcher.SendMessage("parentName", "DestroyObj", (object)objName); /// public class DestroyObj : MessageBehaviour { public GameObject messageBox; void Start() { messageBox = GameObject.Find("Canvas").transform.Find("MessageBox").gameObject; } protected override void Execute(IMessage message) { if ((string)message.Data == "All") { InputManager.Instance_.ClearSelectedCharacters(); InputManager.Instance_.characters.Clear(); foreach (Transform child in transform) { Destroy(child.gameObject); } foreach (Transform child in GameObject.Find("Canvas/PolyVerticeFather").transform) { Destroy(child.gameObject); } if (UIController.instance.PolygonPlane != null) { UIController.instance.PolygonPlane.SetActive(false); } //RecordManager.Instance.objCount = 0; } else { if ((string)message.Sender == gameObject.name)//找到对应的父物体 { if (gameObject.name.Contains("Polygon")) { foreach (Transform child in GameObject.Find("Canvas/PolyVerticeFather").transform) { Destroy(child.gameObject); } } if (gameObject.name == "pfire") { //创建考题,备课中新建课件,自学 if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.CreatQuestion || ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.EditQuestion || ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.CopyQuestion || ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.PrepareMode || ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.EditCourceware || ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.SelfStudyMode) { //新建节点,既没有新建节点也没有加载节点两种情况下允许删除(加载节点不允许删除) if (RecordManager.Instance.IsRecording || (!RecordManager.Instance.IsRecording && !LoadManager.Instance.IsPlayBacking)) { foreach (Transform child in transform) { if ((string)message.Data == child.name)//找到要删除的子物体 { if (!child.GetComponent().isSpreading)//蔓延过程中不能删除 { if (RecordManager.Instance.IsRecording) { MessageDispatcher.SendMessage(gameObject.name, "RecordDeleteEvent", (object)child.name); } //InputManager.Instance_.selectedCharacters.Remove(child.gameObject); Destroy(child.gameObject); //RecordManager.Instance.objCount--; //删除时,如果已经蔓延过一次,及存在蔓延出来的火,这是需要删除蔓延出来的火 foreach (Transform child1 in transform) { if (child1.GetComponent() && child1.GetComponent().fireSourceName == child.name) { Destroy(child1.gameObject); } } //删除时,如果已经设置了蔓延路径,需删除蔓延路径对象 if (GameObject.Find("pfirespreadline").transform.Find(child.name)) { Destroy(GameObject.Find("pfirespreadline").transform.Find(child.name).gameObject); } } else { messageBox.GetComponent().showMessage(ShowMessageType.prompt, "提示信息", "蔓延过程中不能删除"); } } } } } } else { foreach (Transform child in transform) { if ((string)message.Data == child.name)//找到要删除的子物体 { if (RecordManager.Instance.IsRecording) { if (child.name.Contains("zwd") || child.name.Contains("wxp")) { MessageDispatcher.SendMessage(gameObject.name, "RecordDeleteEvent", (object)child.name, 1.5f); } else { MessageDispatcher.SendMessage(gameObject.name, "RecordDeleteEvent", (object)child.name); } } //InputManager.Instance_.selectedCharacters.Remove(child.gameObject); if (InputManager.Instance_.characters.Contains(child.gameObject)) { InputManager.Instance_.characters.Remove(child.gameObject); } if (InputManager.Instance_.GetSelectedCharacters().Contains(child.gameObject)) { InputManager.Instance_.GetSelectedCharacters().Remove(child.gameObject); } Destroy(child.gameObject); //RecordManager.Instance.objCount--; } } } } } } }