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() { btnClose.onClick.AddListener(() => { radioAngleViewMax.localScale = Vector3.zero; }); } // Update is called once per frame void Update() { } /// /// 显示UI /// /// 无人机设备id /// 无人机设备类型 /// 无人机名称 /// 渲染摄像机画面 public void CreateUI(UnmannedAerialVehicleManage unmannedAerialVehicleManage,bool isShow) { RadioAngleView radioAngleView = radioAngleViews.Find(x => x.deviceID == unmannedAerialVehicleManage.equipmentCommon.deviceID); if (radioAngleView) { radioAngleViewMax.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 = isShow ? Vector3.one : Vector3.zero; wrj.name = name; RadioAngleView _radioAngleView = wrj.GetComponent(); if (_radioAngleView) { _radioAngleView.deviceID = unmannedAerialVehicleManage.equipmentCommon.deviceID; _radioAngleView.textNmme.text = name; Mask mask = wrj.transform.GetComponentInChildren(); if (mask) mask.enabled= unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? true : false; radioAngleViews.Add(_radioAngleView); // 创建 RenderTexture RenderTexture renderTexture = new RenderTexture(500, 500, 0); renderTexture.name = unmannedAerialVehicleManage.equipmentCommon.deviceID; unmannedAerialVehicleManage.dzWRJCamera.targetTexture = renderTexture; unmannedAerialVehicleManage.gxWRJCamera.targetTexture = renderTexture; _radioAngleView.rawShow.texture = unmannedAerialVehicleManage.wrjModel == WRJModel.电子侦察无人机 ? unmannedAerialVehicleManage.dzWRJCamera.targetTexture : unmannedAerialVehicleManage.gxWRJCamera.targetTexture; renderTextures.Add(renderTexture); } } } } /// /// 删除无人机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); } } } } }