using System.Collections; using System.Collections.Generic; using UnityEngine; using AX.MessageSystem; using System; /// /// 战术模型选中处理 /// public class ObjSelected : MonoBehaviour { public bool selected; // Use this for initialization void Start () { MessageDispatcher.AddListener("RADIOSELECT", RadioSelected); MessageDispatcher.AddListener("CANCEL_RADIOSELECT", CancelRadioSelected); } private void RadioSelected(IMessage obj) { var selectObjchild = (GameObject)obj.Data; if (selectObjchild.transform.parent.gameObject == gameObject) { DoSelect(gameObject); } } private void DoSelect(GameObject obj) { selected = true; SelectedObjs.selectedObj = obj; var layer = LayerMask.NameToLayer("ContourProfile"); SetLayerRecursively(obj, layer); } private void SetLayerRecursively(GameObject obj, int newLayer) { obj.layer = newLayer; foreach (Transform child in obj.transform) { SetLayerRecursively(child.gameObject, newLayer); } } private void CancelRadioSelected(IMessage obj) { var selectedObj = (GameObject)obj.Data; if (selectedObj == gameObject) { DoDisSelect(gameObject); } } private void DoDisSelect(GameObject obj) { selected = false; SelectedObjs.selectedObj = null; var layer = LayerMask.NameToLayer("Default"); SetLayerRecursively(obj, layer); } // Update is called once per frame void Update () { } private void OnDestroy() { MessageDispatcher.RemoveListener("RADIOSELECT", RadioSelected); MessageDispatcher.RemoveListener("CANCEL_RADIOSELECT", CancelRadioSelected); } }