using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 无人机视角显示 /// public class DroneViewDisplay : MonoSingleton { public Transform uiParent; #region UI /// /// WRJUI集合 /// public static List radioAngleViews = new List(); /// /// 所有无人机RenderTexture集合 /// public static List renderTextures = new List(); /// /// UIPrefab /// [Header("UIPrefab")] public GameObject prefabRadioAngleView; /// /// 放大显示 /// [Header("放大显示")] public Transform radioAngleViewMax; /// /// 放大显示无人机名称 /// [Header("放大显示无人机名称")] public Text textNmme; /// /// 放大显示关闭按钮 /// [Header("放大显示关闭按钮")] public Button btnClose; /// /// 放大显示视角显示RawImage /// [Header("无线电探测放大显示视角显示RawImage")] public RawImage rawShow; #endregion // Start is called before the first frame update void Start() { Debug.Log(GlobalFlag.blueOrRed); transform.localScale = GlobalFlag.blueOrRed == 0 ? Vector3.one : Vector3.zero; btnClose.onClick.AddListener(() => { radioAngleViewMax.localScale = Vector3.zero; }); } /// /// 显示UI /// /// 无人机脚本 /// 是否显示 public void CreateUI(UnmannedAerialVehicleManage unmannedAerialVehicleManage, bool isShow) { Debug.Log("生成:" + unmannedAerialVehicleManage.transform.name); if (unmannedAerialVehicleManage.equipmentCommon.deviceID.Length < 10) return; RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == unmannedAerialVehicleManage.equipmentCommon.deviceID); if (radioAngleView) { radioAngleView.transform.SetAsFirstSibling(); // 移到父物体的第一个位置 radioAngleView.transform.localScale = Vector3.one; textNmme.text = name; rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? unmannedAerialVehicleManage.dzWRJCamera.targetTexture : unmannedAerialVehicleManage.gxWRJCamera.targetTexture; } else { if (unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 || unmannedAerialVehicleManage.wrjModel == WRJModel.光学无人机) { GameObject wrj = Instantiate(prefabRadioAngleView, uiParent); wrj.transform.localScale = Vector3.zero; wrj.name = name; wrj.transform.SetAsLastSibling();// 移到父物体的最后一个位置 RadioAngleView radioAngleViewMain = wrj.GetComponent(); if (radioAngleViewMain) { radioAngleViewMain.deviceID = unmannedAerialVehicleManage.equipmentCommon.deviceID; radioAngleViewMain.textNmme.text = name; radioAngleViewMain.typeWRJ= unmannedAerialVehicleManage.wrjModel; Mask mask = wrj.transform.GetComponentInChildren(); if (mask) mask.enabled = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? true : false; // 创建 RenderTexture RenderTexture renderTexture = new RenderTexture(500, 500, 0); renderTexture.name = unmannedAerialVehicleManage.equipmentCommon.deviceID; if(unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机) { unmannedAerialVehicleManage.dzWRJCamera.gameObject.SetActive(true); } else { unmannedAerialVehicleManage.gxWRJCamera.gameObject.SetActive(true); } unmannedAerialVehicleManage.dzWRJCamera.targetTexture = renderTexture; unmannedAerialVehicleManage.gxWRJCamera.targetTexture = renderTexture; radioAngleViewMain.rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? unmannedAerialVehicleManage.dzWRJCamera.targetTexture : unmannedAerialVehicleManage.gxWRJCamera.targetTexture; renderTextures.Add(renderTexture); radioAngleViews.Add(radioAngleViewMain); } } } } /// /// 删除无人机UI /// /// public void DistroyUI(string deviceID) { RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == deviceID); if (radioAngleView) { Destroy(radioAngleView.gameObject); for(int i= 0; i < radioAngleViews.Count; i++) { if (radioAngleView == null) { radioAngleViews.RemoveAt(i); } } } RenderTexture renderTexture = renderTextures.Find(x => x.name == deviceID); if (renderTexture) { Destroy(renderTexture); for (int i = 0; i < renderTextures.Count; i++) { if (renderTextures == null) { renderTextures.RemoveAt(i); } } } } /// /// 根据deviceID返回RenderTexture /// /// /// public RenderTexture renderTextureTo(string deviceID) { RenderTexture radioAngleView = renderTextures.Find(x => x.name == deviceID); return radioAngleView; } /// /// 打开放大UI /// /// /// (); if (mask) mask.enabled = wRJModel == WRJModel.电子侦察无人机 ? true : false; } void OnDestroy() { for (int i = 0; i < renderTextures.Count; i++) { Destroy((RenderTexture)renderTextures[i]); } } }